python - SFTP 连接失败 socket.timeout?
问题描述
我正在尝试连接到我们的一个 SFTP 服务器以自动生成报告。我们每周从该服务器中提取一个文件,但我无法使此连接正常工作。我没有找到对以下回溯错误的任何有用参考。任何人都知道可能导致此问题的原因是什么?
执行代码 2 或 3 秒后出现 socket.timeout 错误。
import paramiko
cli = paramiko.SSHClient()
cli.set_missing_host_key_policy(paramiko.AutoAddPolicy())
cli.connect(hostname='AHOST', port=21, username="USER", password="PASS")
stdin_, stdout_, stderr_ = cli.exec_command("ls -l ~")
print(stdout_.readlines())
cli.close()
追溯:
Exception: Error reading SSH protocol banner
Traceback (most recent call last):
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 2138, in _check_banner
buf = self.packetizer.readline(timeout)
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\packet.py", line 367, in readline
buf += self._read_timeout(timeout)
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\packet.py", line 576, in _read_timeout
raise socket.timeout()
socket.timeout
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 1966, in run
self._check_banner()
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 2143, in _check_banner
"Error reading SSH protocol banner" + str(e)
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
Traceback (most recent call last):
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 2138, in _check_banner
buf = self.packetizer.readline(timeout)
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\packet.py", line 367, in readline
buf += self._read_timeout(timeout)
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\packet.py", line 576, in _read_timeout
raise socket.timeout()
socket.timeout
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/user_name/PycharmProjects/PDD_Report/MAIN/MAIN.py", line 12, in <module>
cli.connect(hostname='A40T', port=21, username="user_name", password="gate001")
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\client.py", line 397, in connect
t.start_client(timeout=timeout)
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 587, in start_client
raise e
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 1966, in run
self._check_banner()
File "C:\Users\user_name\Desktop\Python 3.6.2\lib\site-packages\paramiko\transport.py", line 2143, in _check_banner
"Error reading SSH protocol banner" + str(e)
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
解决方案
您正在连接到 FTP 端口 21。
SSH/SFTP 使用端口 22(参数的默认值是什么port
,您可以覆盖它)。
旁注1:您的问题是关于SFTP的。然而,SFTPClient
您使用SSHClient
并执行shell命令而不是使用 ,这与 SFTP 无关。
旁注2:不要这样使用AutoAddPolicy
。这样做会失去安全感。
请参阅Paramiko “未知服务器”。
推荐阅读
- unity3d - 使用 UFPS 和 Inventory Pro 时如何在 Unity 中锁定光标?
- scala - build.spark:添加火花依赖
- node.js - 如何防止由于刷新导致的多个用户输入(Node JS)
- python - 不和谐机器人上的 YouTube 搜索
- c# - IActionResult .Net Core 上的默认参数
- html - Rotativa 不显示所有内容
- python - 添加 Keras Lambda 层后获取新输出?
- java - 在抽象方法中抓取参数
- java - 使用有效数字的 BigDecimal 除法
- python - 在 Pandas 中读取 CSV 时忽略一行