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"。
我在尝试关闭 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"。