如何在Python中使用SSH连接从远程主机发送HTTP GET请求?
我正在使用与Paramiko的SSH连接。 我的代码: 如何从连接的远程主机发送HTTP如何在Python中使用SSH连接从远程主机发送HTTP GET请求?,python,http,ssh,paramiko,ssh-tunnel,Python,Http,Ssh,Paramiko,Ssh Tunnel,我正在使用与Paramiko的SSH连接。 我的代码: 如何从连接的远程主机发送HTTPGET请求(将其用作代理) 我根据答案找到了解决方案: with SSHTunnelForwarder( ssh_address_or_host=(remote_host, remote_port), ssh_username=remote_user, ssh_password=remote_password, remote_bind_addr
GET
请求(将其用作代理)
我根据答案找到了解决方案:
with SSHTunnelForwarder(
ssh_address_or_host=(remote_host, remote_port),
ssh_username=remote_user,
ssh_password=remote_password,
remote_bind_address=("www.python.org", 80),
) as tunnel:
conn = http.client.HTTPConnection("127.0.0.1", port=tunnel.local_bind_port)
conn.request("GET", '/')
有两种选择:
外部工具
使用SSH服务器上可以发送HTTP请求的任何工具。例如,curl
或wget
:
curl https://www.example.com/
并使用Paramiko执行:
此解决方案更简单,但依赖于命令,因此它也依赖于平台
通讯埠转送
将本地端口转发到远程HTTP服务器端口80,并使用本地Python代码连接到转发的端口
您将发现许多如何转发数据库端口的示例。像这个:
在您的情况下,您也需要这样做,只需连接HTTP客户端(如HTTPConnection
),而不是使用数据库客户端连接到转发端口
此外,在大多数情况下,数据库转发通常在SSH服务器本身上结束(localhost
/127.0.0.1
),而您需要进一步连接
此解决方案更复杂,但没有外部依赖关系,因此它与平台无关。另一方面,端口转发是一种特殊特权,可能会在服务器上受到限制(但通常不是)。在尝试实现它之前,您可以使用SSH客户端测试它。有两个选项:
外部工具
使用SSH服务器上可以发送HTTP请求的任何工具。例如,curl
或wget
:
curl https://www.example.com/
并使用Paramiko执行:
此解决方案更简单,但依赖于命令,因此它也依赖于平台
通讯埠转送
将本地端口转发到远程HTTP服务器端口80,并使用本地Python代码连接到转发的端口
您将发现许多如何转发数据库端口的示例。像这个:
在您的情况下,您也需要这样做,只需连接HTTP客户端(如HTTPConnection
),而不是使用数据库客户端连接到转发端口
此外,在大多数情况下,数据库转发通常在SSH服务器本身上结束(localhost
/127.0.0.1
),而您需要进一步连接
此解决方案更复杂,但没有外部依赖关系,因此它与平台无关。另一方面,端口转发是一种特殊特权,可能会在服务器上受到限制(但通常不是)。在尝试实现它之前,您可以使用SSH客户端测试它