使用SSH创建隧道转发端口

在只映射了22端口的服务器容器上,可以通过SSH隧道进行端口转发,可以安全地将远程服务器上的端口映射到本地机器。

1
ssh -L 本地端口:localhost:服务器端口 username@your_server_ip

下面以转发Jupyter Notebook服务为例:

步骤一:在服务器上启动Jupyter Notebook

  1. SSH登录服务器:通过SSH登录到你的服务器。
    1
    2
    ssh username@your_server_ip

  2. 启动Jupyter Notebook:在服务器上启动Jupyter Notebook,指定一个非默认端口(例如8888)。
    1
    2
    jupyter notebook --no-browser --port=8888

    这样会在服务器上启动Jupyter Notebook,并且输出类似于以下内容:
    1
    2
    3
    4
    5
    To 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隧道

  1. 在本地机器上创建SSH隧道:打开一个新的终端窗口,在本地机器上执行以下命令,将服务器的8888端口转发到本地的8888端口。
    1
    2
    3
    # 其中右边的localhost:8888指的是服务器的8888端口,左边的8888指的是本地映射端口
    ssh -L 8888:localhost:8888 username@your_server_ip

    这样,本地机器上的8888端口就会转发到服务器的8888端口。

步骤三:在本地浏览器上访问Jupyter Notebook

  1. 在本地浏览器上打开Jupyter Notebook:在本地浏览器中访问以下URL:
    1
    2
    http://localhost:8888

    如果Jupyter Notebook要求输入token,将服务器启动时输出的token复制并粘贴到浏览器中。

其他注意事项

  • 确保服务器上已经安装了Jupyter Notebook。如果没有,可以通过以下命令安装:
    1
    2
    pip install notebook

  • 如果服务器防火墙限制了端口访问,确保允许你使用的端口(如8888)。
  • 如果使用了自定义的SSH端口(非22端口),需要在SSH命令中指定端口。例如,如果SSH端口是2222:
    1
    2
    ssh -p 2222 -L 8888:localhost:8888 username@your_server_ip

通过以上步骤,你就可以在只映射了22端口的服务器容器上使用Jupyter Notebook了。
此外,SSH端口转发仅适用于一般场景,如果端口映射需求比较复杂,则可以考虑使用VPN 或者Frp的方案,性能和安全性都有保障