在Python中使用Paramiko执行SFTP命令

2024-04-18 03:03:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想连接到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()

Tags: tokeyimport服务器paramiko错误stdoutexception
2条回答

我的问题的答案是:

如何读取rsa密钥

    pkey = paramiko.RSAKey.from_private_key_file('/Users/rajesh.maulekhi/Downloads/id_rsa')

函数重新返回sftp客户端

^{pr2}$

似乎您相信您的代码执行SFTPls命令。它没有。它尝试执行lsshell命令。您的服务器可能甚至不允许执行shell命令,因此出现错误。在

如果要使用SFTP,则需要使用^{} class及其方法,如^{}。在


注意,SFTP协议没有文本命令,比如ls。SFTP是一个二进制协议。您知道,这些命令是一个常见的SFTP客户机OpenSSHsftp的命令。它将用户文本命令映射到二进制SFTP协议请求。ParamikoSFTPClient类将对其方法的调用映射为等效的二进制SFTP协议请求。在

有关更多详细信息,请参阅我对SSH invocation of a subsystem SFTP using command line的答复。在

相关问题 更多 >