Search code examples
network-programmingsshjupyter-notebookremote-accesshpc

Cannot start jupyter notebook remotely on HPC using ssh


I logged in to a HPC using:

ssh -p 2222 user@hpc.edu

and then started Jupyter notebook using:

jupyter notebook --no-browser --port=9999

I got a url:

http://localhost:9999/?token=0518475c55eaafb82abce7d2d5344b48174012

Then I tried to access the Jupyter notebook remotely using my computer:

ssh -p 2222 user@hpc.edu -L 9999:localhost:9999 -N

The connection is refused after taking a long time:

channel 2: open failed: connect failed: Connection refused

I remember earlier being able to access the notebook by not putting

-p 2222 

in the ssh command anywhere. But now I have to do it to ssh remotely. Is there any other change of command needed to access the jupyter notebook remotely?

EDIT:

I added -v -v to the command that I executed on my computer. Here is what it says:

password: debug2: input_userauth_info_req debug2: input_userauth_info_req: num_prompts 0 debug1: Authentication succeeded (keyboard-interactive). Authenticated to bridges.psc.edu ([128.182.108.57]:2222). debug1: Local connections to LOCALHOST:9999 forwarded to remote address localhost:9999 debug1: Local forwarding listening on ::1 port 9999. debug2: fd 4 setting O_NONBLOCK debug1: channel 0: new [port listener] debug1: Local forwarding listening on
127.0.0.1 port 9999. debug2: fd 5 setting O_NONBLOCK debug1: channel 1: new [port listener] debug2: fd 3 setting TCP_NODELAY debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: pledge: network debug1: client_input_global_request: rtype keepalive@openssh.com want_reply 1 debug1: Connection to port 9999 forwarding to localhost port 9999 requested. debug2: fd 6 setting TCP_NODELAY debug2: fd 6 setting O_NONBLOCK debug1: channel 2: new [direct-tcpip] channel 2: open failed: connect failed: Connection refused debug2: channel 2: zombie debug2: channel 2: garbage collecting debug1: channel 2: free: direct-tcpip: listening port 9999 for localhost port 9999, connect from 127.0.0.1 port 54542 to
127.0.0.1 port 9999, nchannels 3 debug1: Connection to port 9999 forwarding to localhost port 9999 requested. debug2: fd 6 setting TCP_NODELAY debug2: fd 6 setting O_NONBLOCK debug1: channel 2: new [direct-tcpip] channel 2: open failed: connect failed: Connection refused

I had tried to follow this: http://ipyrad.readthedocs.io/HPC_Tunnel.html


Solution

  • This one works for me. First, start Jupyter from your server using:

    jupyter notebook --no-browser --port=7002
    

    Then from your local machine, you can tunnel to Jupyter using the following code

    ssh -N -f -L localhost:7001:localhost:7002 user@hpc.edu
    

    Now you can access the Jupyter from your local machine by browsing localhost:7001

    More details can be found here: here