通过静态IP主机做SSH桥接 实现两台动态IP设备间的Jupyter Notebook访问
方案说明
你已经完成了中转主机的SSH反向隧道配置,只需要在原有脚本逻辑基础上增加一层端口转发即可,三个主机的角色约定如下:
- 中转主机:公网静态IP,对应你之前脚本的
$servername,用户名记为$trans_user - 远端目标PC:动态IP,需要运行Jupyter Notebook的设备,用户名记为
$remote_user - 本地PC:你的工作设备,需要打开浏览器访问Jupyter
操作步骤
1. 远端动态IP主机侧配置(仅需执行一次,后台保持运行)
除了原有SSH端口的反向转发,不需要额外配置,保持如下进程后台运行即可,增加的参数可以避免隧道超时断开:
ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=5 -R 20000:127.0.0.1:22 $trans_user@$servername
2. 本地PC侧脚本修改
和你原有使用逻辑完全兼容,修改后的完整脚本如下:
# 清理本地占用的端口 sudo fuser -k 8881/tcp 8000/tcp echo 'Port 8881、8000 is free now' # 第一步:建立本地到中转主机的SSH隧道,映射远端PC的22端口到本地8000 ssh -N -f -L localhost:8000:127.0.0.1:20000 $trans_user@$servername read -p '中转隧道创建完成 - 按回车继续' # 第二步:通过本地8000端口映射远端PC的Jupyter端口到本地8881 ssh -N -f -L localhost:8881:localhost:8888 $remote_user@127.0.0.1 -p 8000 # 第三步:远程启动远端PC上的Jupyter Notebook ssh $remote_user@127.0.0.1 -p 8000 "nohup jupyter notebook --no-browser --notebook-dir=\"$notebookdir\" >/dev/null 2>&1 &" wait echo '请等待几秒后自动打开浏览器' nohup $browser http://localhost:8881/ >/dev/null 2>&1 &
可选优化配置
如果需要避免频繁输入密码,可以将本地PC的SSH公钥上传到远端目标PC,同时将远端目标PC的SSH公钥上传到中转主机,实现免密登录。
内容的提问来源于stack exchange,提问作者Pedro S. Ferreira
相关产品推荐
相关产品推荐

