python - Paramiko 关闭连接不起作用
问题描述
我在尝试关闭 Paramiko SFTP 连接时遇到问题。即使我调用 close 连接仍然挂起,我通过运行 netstat (Windows) 进行检查:
netstat -an | find ":22"
和python代码:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.MissingHostKeyPolicy() )
ftp = ssh.open_sftp()
time.sleep(5)
ftp.close()
关闭有效的 Paramiko SFTP 连接的正确方法是什么?
谢谢
解决方案
SSHClient.open_sftp
在 SSH 连接中打开虚拟 SFTP 通道。您可以在单个 SSH 连接中拥有多个通道。因此关闭单个通道不会关闭整个 SSH 连接。
您需要调用SSHClient.close
以关闭物理 SSH 连接(它会关闭所有通道,如果仍有打开的通道)。
ssh.close()
强制警告:不要MissingHostKeyPolicy
用于盲目接受所有主机密钥。那是一个安全漏洞。您失去了对MITM 攻击的保护。
有关正确(且安全)的方法,请参阅:Paramiko "Unknown Server"。
推荐阅读
- jquery - 如何在jQuery中按名称删除带有子哈希的哈希
- json - jmeter - 如何在正文数据中格式化 json(从正则表达式中提取)
- python-3.x - 为什么我的 python 脚本不会在端口 36296 上启动服务器?
- c++ - 如何将此向量的元素添加在一起?
- amazon-web-services - AWS 在我的 CLI 上删除用户,但不在 IAM 上
- google-api - 使用带有颤振的 googleApis 对话框流时出现 403 错误
- java - Groovy ConcurrentHashMap forEach 调用
- angularjs - 用于动态图像的 Angular JS Bootstrap UI 模式
- python - 从特定 CDN 中查找所有资产的总加载时间
- postgresql - Postgres - 限制每个会话运行的过程