paramiko.ssh_exception.SSHException:通道已关闭。尝试通过基于密钥的身份验证连接到远程计算机并运行命令

时间:2018-11-13 15:24:20

标签: python-3.x paramiko

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和基于密钥的身份验证的示例。

0 个答案:

没有答案