Paramiko紧密连接不起作用

时间:2018-06-20 16:00:03

标签: python ssh sftp paramiko

我无法尝试关闭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连接的正确方法是什么?

谢谢

2 个答案:

答案 0 :(得分:3)

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

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

ssh.close()

强制性警告:请勿使用MissingHostKeyPolicy盲目接受所有主机密钥。那是一个安全漏洞。您失去了针对MITM attacks的保护。

有关正确(且安全)的方法,请参见:Verify host key with pysftp

答案 1 :(得分:1)

这是正确的解决方法

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。