我的目标是按以下方式更新Host3:[Internet] [Host1:HasInternet] [Host2:VPN锁定] [Host3:No-Internet]
当前,我必须运行一系列SSH命令来首先建立从Host1到Host2到Host3到Host3的反向SSH连接,然后建立动态隧道,然后按如下所示更新我的Host3(请参见表的屏幕截图:
我想用python自动化这一系列的SSH隧道。我研究了sshtunnels库paramiko,但没有看到如何使用它们达到我的目标。
非常感谢您的帮助。
而不是手动管理隧道,让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 Host3
; ssh
将从配置文件中获取真实主机名,必要的用户名和中间主机。
还有一个ProxyCommand
选项,您可以用来提供对连接过程的更多控制。有关这两个选项的更多详细信息,请参见man ssh_config
。