Paramiko 关闭连接不起作用

Paramiko close connection doesn't work

我在尝试关闭 Paramiko SFTP 连接时遇到问题。即使我调用关闭连接仍然挂起,我通过 运行 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 连接的正确方法是什么?

谢谢

这才是正确的做法

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect()

ftp = ssh.open_sftp()

ftp.close()
ssh.close()

您需要关闭 ssh 实例以及 sftp。

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

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

ssh.close()

强制警告:不要使用MissingHostKeyPolicy盲目接受所有主机密钥。这是一个安全漏洞。您失去了针对 MITM attacks.

的保护

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