首页 > 解决方案 > 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 连接的正确方法是什么?

谢谢

标签: pythonsshsftpparamiko

解决方案


SSHClient.open_sftp在 SSH 连接中打开虚拟 SFTP 通道。您可以在单个 SSH 连接中拥有多个通道。因此关闭单个通道不会关闭整个 SSH 连接。

您需要调用SSHClient.close以关闭物理 SSH 连接(它会关闭所有通道,如果仍有打开的通道)。

ssh.close()

强制警告:不要MissingHostKeyPolicy用于盲目接受所有主机密钥。那是一个安全漏洞。您失去了对MITM 攻击的保护。

有关正确(且安全)的方法,请参阅:Paramiko "Unknown Server"


推荐阅读