首页 > 解决方案 > 使用 Python 建立 SSH 隧道

问题描述

我的目标是按如下方式更新 Host3:[Internet]<---->[Host1:HasInternet]<---->[Host2:Locked-by-VPN]<---->[Host3:No-互联网]

目前,我必须运行一系列 SSH 命令来首先建立从 Host1 到 Host2 到 Host3 的反向 SSH 连接,然后是动态隧道,然后按如下方式更新我的 Host3(见表格截图):

在此处输入图像描述

我想用 python 自动化这一系列的 SSH 隧道。我已经研究了 paramiko,一个 sshtunnels 库,但我没有看到如何使用它们来实现我的目标。

任何帮助深表感谢。

标签: pythonsshssh-tunnel

解决方案


与其手动管理隧道,不如ssh使用选项为您完成ProxyJump,您可以-J在命令行上使用该选项进行访问。

ssh -J <username>@Locked-By-VPN <username>@Has-No-Internet

Has-No-Internet通过首先连接到 来建立连接Locked-By-VPN

您可以通过将以下内容添加到~/.ssh/config文件中来缩写它:

Host Host3
   Hostname
   User <username>
   ProxyJump <username>@Locked-By-VPN

然后你可以简单地运行ssh Host3ssh将从配置文件中获取真实的主机名、必要的用户名和中间主机。

您还可以使用一个ProxyCommand选项来提供对连接过程的更多控制。有关man ssh_config这两个选项的更多详细信息,请参阅。


推荐阅读