![](/img/trans.png)
[英]Server implementation (using Paramiko) for sftp AND command execution
[英]“getaddrinfo failed” when connecting to SFTP server using Paramiko
我正在尝试连接到 SFTP 服务器,但它返回错误:
[Errno 11001] 获取地址信息失败
我正在使用 Python 3.7.3 和 Paramiko 版本是 2.6.0
import paramiko
host_name = "sftp://81.149.151.143"
user_name = "******"
password = "******"
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=host_name, port=220, username=user_name, password=password)
ftp_client=ssh_client.open_sftp()
ftp_client.put('***/issue_1.docx', '/issue_1.docx')
ftp_client.close()
这是完整的错误:
Traceback (most recent call last):
File "/sftp/paramiko_bot.py", line 10, in <module>
ssh_client.connect(hostname=host_name, port=22, username=user_name, password=password)
File "\Local\Programs\Python\Python37\lib\site-packages\paramiko\client.py", line 340, in connect
to_try = list(self._families_and_addresses(hostname, port))
File "\Local\Programs\Python\Python37\lib\site-packages\paramiko\client.py", line 204, in _families_and_addresses
hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM
File "\AppData\Local\Programs\Python\Python37\lib\socket.py", line 748, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed
SSHClient.connect
的hostname
参数应该只包含一个主机名(或者在你的情况下是一个 IP 地址)——而不是任何类型的 URL。
ssh_client.connect(hostname="81.149.151.143", port=220, username=..., password=...)
强制性警告:不要以这种方式使用AutoAddPolicy
这样做会失去对MITM 攻击的保护。 有关正确的解决方案,请参阅Paramiko "Unknown Server" 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.