SSH 端口转发实现 Jupyter Notebook 远程连接服务器

SSH 端口转发实现 Jupyter Notebook 远程连接服务器

  • 说明
  • 问题描述
  • 解决方案

说明

本博客用于记录本人利用 SSH 端口转发实现 Jupyter Notebook 远程连接服务器的方法。

问题描述

最近学校服务器频繁被入侵,网络中心为了防范病毒入侵和恶意程序扫描等,给机房防火墙设置了端口屏蔽功能,只留下一些常用端口,如SSH、HTTP等。由于 Jupyter Notebook 运行机制需要启动一个服务并监听一个特定的端口,此时就无法直接通过该端口访问 Jupyter Notebook。因此这里使用 SSH 端口转发功能实现 Jupyter Notebook 远程连接服务器。

解决方案

  1. SSH 端口转发
    SSH 端口转发功能可以将本地的一个端口号映射到目标机的另一个端口号。这里使用 ssh 命令的 -L 参数来实现,其格式为:

    ssh -L 本地地址:本地端口:目标地址:目标端口 用户名@跳板机地址
    

    其中,本地地址通常就是本机,可以直接忽略,默认为 localhost。需要注意的是,这里的目标地址是相对跳板机而言的,如果目标地址跳板机地址一致,则目标地址直接填 localhost。

    举个例子,假设现在要使用本地端口 123 映射到目标机[email protected])端口号 345,不借助额外的跳板机,则只需要在本地开一个终端,执行如下命令:

    ssh -L 123:localhost:345 usrname@196.5.233.1xx
    

    此时,本地终端会登录到 [email protected]保持该终端的登录状态即可实现端口映射,即在本地访问 localhost:123 等价于访问 196.5.233.1xx:345。

  2. 连接测试
    利用上述 SSH 端口转发命令,就可以将原本 Jupyter Notebook 的服务监听端口映射为本地的某个端口号,避免直接访问被防火墙屏蔽的端口号。假设上述 345 端口号是 Jupyter Notebook 的监听端口号,则开一个本地终端来执行上述命令之后,在浏览器中访问 localhost:123 就可以达到 基于SSH 端口转发实现 Jupyter Notebook 远程连接服务器 的目的。

    值得注意的是,上述端口转发是建立在 目标机相应服务已经在监听目标端口了 的基础上。即,使用上述命令时,要先确保服务器上的 Jupyter Notebook 已经在运行了,并且监听的是映射的目标端口号。如果对 Jupyter Notebook 远程连接服务器 不了解的话,可以参考 here 。

  3. 参考资料
    [1] SSH 端口转发玩转
    [2] SSH 隧道端口转发实现Jupyter Notebook远程访问服务器

你可能感兴趣的:(Linux,jupyter,ssh,linux)