You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iPad用Blink SSH远程Ubuntu服务器运行Jupyter Notebook无法访问localhost求助

首先明确说: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连上了服务器,不用断开重新连,直接按下面步骤操作:

  1. 在Blink的SSH会话窗口里,输入~C(注意是波浪线加大写C),这会打开SSH的命令交互界面
  2. 输入端口转发规则:
-L 8888:localhost:8888
  1. 回车确认,看到Forwarding port.的提示就说明转发成功了
  2. 同样,在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

火山引擎 最新活动