Python noob在这里!我正在尝试通过基于密钥的身份验证使用paramiko(Python 3.7.1)连接到远程计算机。连接后,我想执行命令“ ls -l”并打印其输出。但是,当我尝试运行下面的代码时,出现错误“ paramiko.ssh_exception.SSHException:通道已关闭”。
import paramiko
from paramiko.transport import Transport
destination = '192.168.1.201'
port = 22
user = 'myUser'
privkey = paramiko.RSAKey.from_private_key_file ('/home/test/.ssh/test-private-key')
command = 'ls -l'
paramiko.Transport._preferred_kex = ('diffie-hellman-group14-sha1',)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(destination,port,user,pkey=privkey)
(stdin, stdout, stderr) = ssh.exec_command(command)
print(stdout.read())
print(stderr.read())
stdin.close()
ssh.close
我已经通过使用按预期工作的命令“ myUser@192.168.1.201”针对远程计算机测试了基于SSH密钥的身份验证。我还确保当前用户(名为test的用户,它将运行此脚本)具有私钥的读取权限。
当我不对paramiko使用基于密钥的身份验证时,我可以成功连接并运行命令“ ls -l”。这意味着在尝试使基于密钥的身份验证起作用时,我可能做错了。但是我只是无法弄清楚自己在做什么错,我查阅了无数关于paramiko和基于密钥的身份验证的示例。