Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中使用SSH连接从远程主机发送HTTP GET请求?_Python_Http_Ssh_Paramiko_Ssh Tunnel - Fatal编程技术网

如何在Python中使用SSH连接从远程主机发送HTTP GET请求?

如何在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

我正在使用与Paramiko的SSH连接。 我的代码:

如何从连接的远程主机发送HTTP
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客户端测试它