我想连接到SFTP服务器并执行命令,比如ls
。但我得到一个错误:
paramiko.ssh_exception.SSHException: Unable to open channel.
import paramiko
import pysftp
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('xxxxxxxx', username='xxxxxxx', password='xxxxxxxx', key_filename='xxxxxxxxxxx')
stdin, stdout, stderr = ssh.exec_command('ls')
print stdout.readlines()
ssh.close()
exit()
我的问题的答案是:
如何读取rsa密钥
函数重新返回sftp客户端
^{pr2}$似乎您相信您的代码执行SFTP
ls
命令。它没有。它尝试执行ls
shell命令。您的服务器可能甚至不允许执行shell命令,因此出现错误。在如果要使用SFTP,则需要使用^{} class 及其方法,如^{} 。在
注意,SFTP协议没有文本命令,比如
ls
。SFTP是一个二进制协议。您知道,这些命令是一个常见的SFTP客户机OpenSSHsftp
的命令。它将用户文本命令映射到二进制SFTP协议请求。ParamikoSFTPClient
类将对其方法的调用映射为等效的二进制SFTP协议请求。在有关更多详细信息,请参阅我对SSH invocation of a subsystem SFTP using command line的答复。在
相关问题 更多 >
编程相关推荐