python paramiko SSHException:频道已关闭

时间:2015-02-04 09:04:50

标签: python paramiko

我试图与远程ubuntu机器建立一个sftp连接。我能够建立ssh连接。但它在open_sftp()

时抛出异常
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostname,port=port,username=username,password=password)
sftp = ssh.open_sftp()

paramiko.SSHException:频道关闭

任何人都可以帮助我。提前谢谢。

3 个答案:

答案 0 :(得分:2)

我最后一次将SFTP与Paramiko一起使用时,我也遇到了一些问题。我在网上搜索了一下,我找到了这个工具:https://github.com/jbardin/scp.py

使用它:

from scp import SCPClient
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostname,port=port,username=username,password=password)

scpclient = SCPClient(ssh.get_transport(), socket_timeout=15.0)
scpclient.put("my_local_path", "my_remote_path")

答案 1 :(得分:1)

试试这个:

vim /etc/ssh/sshd_config

取消注释这一行:

# Subsystem     sftp    /usr/libexec/openssh/sftp-server
祝你好运!

答案 2 :(得分:0)

在Ubuntu以外的远程操作系统上,yong's solution中列出的注释行可能不存在。在这种情况下,您可以通过将路径添加到文件并修改路径以指向远程系统的sftp-server的正确位置来解决问题。

在QNX上,我能够通过修改/etc/ssh/sshd_config文件并在行中添加来解决此问题:

Subsystem     sftp    /usr/libexec/sftp-server

尽管与该文件的其余部分相比,该行的格式似乎不合适,但它仍然被证明是一个成功的解决方案,因为我能够从SSH客户端对象成功打开SFTP客户端而不会生成SSHException。 / p>