iPad用Blink SSH远程Ubuntu服务器运行Jupyter Notebook无法访问localhost求助
解决iPad通过Blink SSH连接服务器后无法访问Jupyter Notebook的问题
首先明确说:SSH隧道绝对是解决这个问题的最优方案,操作起来也很简单。先给你理清楚问题根源:
服务器上的Jupyter Notebook默认只会监听服务器自身的localhost(也就是127.0.0.1)端口,这意味着只有服务器本地进程能访问它。而你在iPad Chrome里输入的localhost:8888,指向的是iPad自己的本地端口,和服务器的端口完全不是一回事,自然会显示无法访问。
SSH本地端口转发的作用,就是把服务器上的8888端口“映射”到iPad的本地8888端口,这样你访问iPad的localhost,就相当于间接访问服务器的Jupyter服务了。下面给你两种具体的操作方式:
方式一:建立SSH连接时直接设置端口转发
在Blink的命令行里,用下面的命令代替普通的SSH连接命令:
ssh -L 8888:localhost:8888 your_username@your_server_public_ip
参数说明:
-L:指定本地端口转发规则8888:localhost:8888:左边的8888是iPad本地要使用的端口,中间的localhost是服务器上Jupyter监听的地址,右边的8888是服务器上Jupyter的运行端口your_username是你服务器的登录用户名,your_server_public_ip是DigitalOcean服务器的公网IP
连接成功后,启动服务器上的Jupyter Notebook,拿到带token的地址(比如http://localhost:8888/?token=12345),直接在iPad Chrome里打开这个地址就行。
方式二:已连接SSH会话后添加端口转发
如果已经通过Blink连上了服务器,不用断开重新连,直接按下面步骤操作:
- 在Blink的SSH会话窗口里,输入
~C(注意是波浪线加大写C),这会打开SSH的命令交互界面 - 输入端口转发规则:
-L 8888:localhost:8888
- 回车确认,看到
Forwarding port.的提示就说明转发成功了 - 同样,在iPad Chrome里打开服务器给出的Jupyter地址即可
额外注意事项
- 如果iPad的8888端口被其他程序占用了,可以换个端口,比如8889。这时候命令改成
ssh -L 8889:localhost:8888 your_username@your_server_public_ip,然后在Chrome里访问http://localhost:8889/?token=12345 - 不建议修改Jupyter配置让它直接监听公网IP(比如0.0.0.0),这样会暴露服务在公网上,安全性很低。用SSH隧道既能实现访问,又能保证数据传输的加密和安全
内容的提问来源于stack exchange,提问作者Joss




