安全外壳 (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)
在那里:您的远程管理控制台。 正如您所看到的,底部有一个“终端”图标。 单击它以获得终端

(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 条评论