Paramiko关闭连接不起作用

问题描述 投票:2回答:2

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

谢谢

python ssh sftp paramiko
2个回答
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。


3
投票

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

您需要调用SSHClient.close来关闭物理SSH连接(如果有任何通道仍处于打开状态,则需要关闭所有通道)。

ssh.close()

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

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

© www.soinside.com 2019 - 2024. All rights reserved.