使用SSH创建隧道转发端口
在只映射了22端口的服务器容器上,可以通过SSH隧道进行端口转发,可以安全地将远程服务器上的端口映射到本地机器。
1 | ssh -L 本地端口:localhost:服务器端口 username@your_server_ip |
下面以转发Jupyter Notebook服务为例:
步骤一:在服务器上启动Jupyter Notebook
- SSH登录服务器:通过SSH登录到你的服务器。
1
2ssh username@your_server_ip
- 启动Jupyter Notebook:在服务器上启动Jupyter Notebook,指定一个非默认端口(例如8888)。 这样会在服务器上启动Jupyter Notebook,并且输出类似于以下内容:
1
2jupyter notebook --no-browser --port=8888
1
2
3
4
5To access the notebook, open this file in a browser:
file:///home/username/.local/share/jupyter/runtime/nbserver-XXXX-open.html
Or copy and paste one of these URLs:
http://localhost:8888/?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
步骤二:在本地创建SSH隧道
- 在本地机器上创建SSH隧道:打开一个新的终端窗口,在本地机器上执行以下命令,将服务器的8888端口转发到本地的8888端口。 这样,本地机器上的8888端口就会转发到服务器的8888端口。
1
2
3# 其中右边的localhost:8888指的是服务器的8888端口,左边的8888指的是本地映射端口
ssh -L 8888:localhost:8888 username@your_server_ip
步骤三:在本地浏览器上访问Jupyter Notebook
- 在本地浏览器上打开Jupyter Notebook:在本地浏览器中访问以下URL: 如果Jupyter Notebook要求输入token,将服务器启动时输出的token复制并粘贴到浏览器中。
1
2http://localhost:8888
其他注意事项
- 确保服务器上已经安装了Jupyter Notebook。如果没有,可以通过以下命令安装:
1
2pip install notebook
- 如果服务器防火墙限制了端口访问,确保允许你使用的端口(如8888)。
- 如果使用了自定义的SSH端口(非22端口),需要在SSH命令中指定端口。例如,如果SSH端口是2222:
1
2ssh -p 2222 -L 8888:localhost:8888 username@your_server_ip
通过以上步骤,你就可以在只映射了22端口的服务器容器上使用Jupyter Notebook了。
此外,SSH端口转发仅适用于一般场景,如果端口映射需求比较复杂,则可以考虑使用VPN 或者Frp的方案,性能和安全性都有保障