python - 使用 Python 建立 SSH 隧道
问题描述
我的目标是按如下方式更新 Host3:[Internet]<---->[Host1:HasInternet]<---->[Host2:Locked-by-VPN]<---->[Host3:No-互联网]
目前,我必须运行一系列 SSH 命令来首先建立从 Host1 到 Host2 到 Host3 的反向 SSH 连接,然后是动态隧道,然后按如下方式更新我的 Host3(见表格截图):
我想用 python 自动化这一系列的 SSH 隧道。我已经研究了 paramiko,一个 sshtunnels 库,但我没有看到如何使用它们来实现我的目标。
任何帮助深表感谢。
解决方案
与其手动管理隧道,不如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
这两个选项的更多详细信息,请参阅。
推荐阅读
- javascript - 如何在 Woocommerce 结帐页面上禁用非洲国家/地区的邮政编码
- node.js - axios multipart/form-data 请求返回为“request is not well-formed multipart/form-data”
- android - 在 Android 应用程序中,我正在从 URL 打开视频,但无法打开视频错误正在显示,但放置在原始资产中时打开相同的视频
- aurelia - 如何在 aurelia slickgrid/slickgrid 中的 cloumn 值旁边显示图标?
- ios - Sentry iOS dSYM:无法处理本机堆栈跟踪
- android-studio - Android Studio 显示当前用户的帖子以及其他用户的帖子
- python - python - 如何在python的Plotly图表中获取滑块的位置?
- python - 将输入(字符串)视为 python 中的列表
- image-processing - 如何使用 4 个通道而不是 3 个通道在 Halide 中加载图像()?
- java - 在对 Dataframe 执行操作时引发 sqlContext 异常