【发布时间】:2019-12-26 00:12:19
【问题描述】:
在我的公司,我们目前有一个 REST API,只能由特定的跳转框访问。
我想从运行我的 Python 代码的服务器 ssh 到这个盒子,以进行休息调用。
我在下面写了这段代码,但是当我运行它时它挂起并且没有做任何事情:
from sshtunnel import SSHTunnelForwarder
import requests
remote_user = 'me'
remote_host = 'jump.box.net'
remote_port = 22
local_host = '10.30.22.218'
local_port = 443
server = SSHTunnelForwarder(
(remote_host, remote_port),
ssh_username=remote_user,
ssh_private_key_password='mypassword',
ssh_private_key='~/.ssh/mykey',
remote_bind_address=(local_host, local_port),
)
server.start()
r = requests.get(url = 'https://ourinternalendpoint.com/api/stuff',verify=False).content
print(r)
server.stop()
本地主机IP其实就是ourinternalendpoint域的IP。
我做错了什么?我知道 remote_host 名称是正确的,端口、用户、私钥和 ssh-ing 密码也是正确的。
server.start() 命令也完成了。它挂在 get 请求上。
我在 Linux 服务器上执行此操作,如果需要,我愿意使用 Bash 为我的 Python 脚本进行端口转发。
【问题讨论】:
-
嗨乔治,它挂在 server.start() 上吗?您是否尝试过手动使用 ssh 来检查一切是否正常?你机器上的 SSH 只能通过 root 访问?
-
命令行中的 ssh 工作正常。说的好,明天我会找到它所在的确切线路!
-
当然!既然你发现了,就在这里发帖。
-
它挂在获取请求上,我已经更新了帖子。
标签: python networking ssh portforwarding