我试图与远程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:频道关闭
任何人都可以帮助我。提前谢谢。
答案 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>