安全外壳 (SSH) 是一个强大的远程管理工具,但它缺少一些便利的功能。编写一个功能齐全的远程管理控制台听起来会是一项繁重的工作。当然,开源社区的某个人已经写了一些东西,对吧?
他们已经有了,它的名字是 Jupyter。您可能会认为 Jupyter 是数据科学家用来分析一周内广告点击趋势的工具之一。这没错——他们确实用它来做这个,而且它在这方面是一个很棒的工具。但这只是触及其皮毛。
关于 SSH 端口转发
有时,您可以通过端口 22 SSH 连接到服务器。没有理由假设您可以连接到任何其他端口。也许您正在通过另一个“跳板”服务器进行 SSH 连接,该服务器具有更多访问权限,或者存在主机或网络防火墙来限制端口。当然,限制 IP 范围以进行访问是有充分理由的。SSH 是一种用于远程管理的安全协议,但是允许任何人连接到任何端口是完全没有必要的。
这里有一种替代方案:运行一个简单的 SSH 命令进行端口转发,以将本地端口转发到远程本地连接。当您运行像 -L 8111:127.0.0.1:8888
这样的 SSH 端口转发命令时,您是在告诉 SSH 将您的本地端口 8111
转发到远程主机认为的 127.0.0.1:8888
。远程主机认为 127.0.0.1
是它自己。
就像在芝麻街里一样,“这里”是一个微妙的词。
地址 127.0.0.1
是您向网络表达“这里”的方式。
从实践中学习
这听起来可能令人困惑,但运行它比解释它更简单
$ ssh -L 8111:127.0.0.1:8888 moshez@172.17.0.3
Linux 6ad096502e48 5.4.0-40-generic #44-Ubuntu SMP Tue Jun 23 00:01:04 UTC 2020 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Aug 5 22:03:25 2020 from 172.17.0.1
$ jupyter/bin/jupyter lab --ip=127.0.0.1
[I 22:04:29.771 LabApp] JupyterLab application directory is /home/moshez/jupyter/share/jupyter/lab
[I 22:04:29.773 LabApp] Serving notebooks from local directory: /home/moshez
[I 22:04:29.773 LabApp] Jupyter Notebook 6.1.1 is running at:
[I 22:04:29.773 LabApp] http://127.0.0.1:8888/?token=df91012a36dd26a10b4724d618b2e78cb99013b36bb6a0d1
<MORE STUFF SNIPPED>
将端口 8111
转发到 127.0.0.1
,并在远程主机上启动 Jupyter,该主机正在监听 127.0.0.1:8888
。
现在您需要理解 Jupyter 在撒谎。它认为您需要连接到端口 8888
,但您已将其转发到端口 8111
。因此,在您将 URL 复制到浏览器之后,但在单击 Enter 之前,将端口从 8888
修改为 8111

(Moshe Zadka, CC BY-SA 4.0)
这就是您的远程管理控制台。如您所见,底部有一个“Terminal”图标。单击它以获得终端

(Moshe Zadka, CC BY-SA 4.0)
您可以运行命令。创建文件将在侧面的文件浏览器中显示它。您可以单击该文件以在本地运行的编辑器中打开它

(Moshe Zadka, CC BY-SA 4.0)
您还可以下载、重命名或删除文件

(Moshe Zadka, CC BY-SA 4.0)
单击小的向上箭头将允许您上传文件。为什么不上传上面的截图呢?

(Moshe Zadka, CC BY-SA 4.0)
作为一个不错的最后小技巧,Jupyter 允许您通过双击直接查看远程图像。
哦,对了,如果您想使用 Python 进行系统自动化,您也可以使用 Jupyter 打开笔记本。
因此,下次您需要远程管理防火墙环境时,为什么不使用 Jupyter 呢?
4 条评论