目前,我正在使用Python psftp.exe
和PuTTY psftp.exe
进行SFTP传输。
它正在工作,但不是很干净,也不便于携带。
我想重现使用Python pysftp相同的行为,但我不知道在哪里input所有的参数。 我在PuTTY中有以下configuration:
我应该如何在pysftp中input所有这些参数,以便检索我的文件?
编辑:使用Martin Prikryl的答案,我发现了一些新的东西来探索。 如果我理解的很好,我需要使用套接字。 把我仍然有一些问题,以input我需要的所有信息。
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) proxy = ("gw.proxy.fr",1234) sock.connect(proxy) target=("123.123.123.255",23) cmd_connect = "CONNECT {}:{} HTTP/1.1\r\n\r\n".format(*target) sock.sendall(cmd_connect)
我收到的回应是HTTP/1.0 407 Proxy Authentication Required
。 在我使用代理身份validation信息的地方,这是一种正常的原因。 那么,你有什么想法我可以使用它们,并将它们input到我的套接字?
我不认为pysftp支持代理。 虽然注意到pysftp只是Paramiko 库的一个包装,它支持代理。
所以我建议你直接使用Paramiko。
一开始请参阅如何在Python中通过http代理ssh? 特别是@tintin的答案 。
要向代理进行身份验证,请在CONNECT
命令之后添加Proxy-Authorization
标头,如下所示:
Proxy-Authorization: Basic <credentials>
<credentials>
是基于64位编码的字符串username:password
。
cmd_connect = "CONNECT {}:{} HTTP/1.1\r\nProxy-Authorization: Basic <credentials>\r\n\r\n".format(*target)