Especially good for running on headless devices, such as supercomputers or clusters.
# remote_port should be value between 8888 and 9000
jupyter notebook --no-browser --port=remote_port
# remote_user is your username to the remote_host server
ssh -N -f -L localhost:8888:localhost:remote_port remote_user@remote_host
jupyter notebook --no-browser --port=8889
ssh -N -f -L localhost:8888:localhost:8889 [email protected]