我如何解决无法在python中建立SSH连接的问题?

时间:2018-08-07 22:12:41

标签: python debugging ssh paramiko

我有两个几乎相同的设备。 spur将通过ssh连接一个,但不连接另一个。我如何找出原因?

>>> shell1 = spur.SshShell('10.201.140.242', 'username', 'password', missing_host_key=spur.ssh.MissingHostKey.accept)
>>> results = shell1.run(['ls', '-a'])
>>> results.output
'.\n..\n.aptitude\n.bashrc\n.cache\n.config\n.profile\n'

>>> shell2 = spur.SshShell('10.201.129.56', 'username', 'password', missing_host_key=spur.ssh.MissingHostKey.accept)
>>> results = shell2.run(['ls', '-a'])
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "E:\development\virtenv\lib\site-packages\spur\ssh.py", line 166, in run
return self.spawn(*args, **kwargs).wait_for_result()
  File "E:\development\virtenv\lib\site-packages\spur\ssh.py", line 178, in spawn
channel = self._get_ssh_transport().open_session()
  File "E:\development\virtenv\lib\site-packages\spur\ssh.py", line 268, in _get_ssh_transport
raise self._connection_error(error)
ConnectionError: Error creating SSH connection
Original error: ('10.201.129.56', <paramiko.ecdsakey.ECDSAKey object at 0x11328070>, <paramiko.ecdsakey.ECDSAKey object at 0x1135F350>)

我对错误消息感到困惑。返回ip和两个关键对象应该意味着什么?我应该从中收集有用的信息吗?

两个设备都将接受命令行中的ssh连接,因此可以解决一个明显的问题。

两者都运行具有相同登录凭据的相同版本的Ubuntu。主目录甚至是相同的(没有.ssh目录)。更进一步,它们的sshd_config文件都相同(因此,在其他配置选项中也使用相同的版本)。

问题似乎不在ssh设置中,但该错误并未表明问题可能在何处!

有什么想法吗?


启用日志记录不会增加太多。

shell1:

11:32:11|[ INFO] - paramiko.transport - _log - Connected (version 2.0, client OpenSSH_5.9p1) 11:32:11|[ INFO] - paramiko.transport - _log - Authentication (password) successful!

shell2:

11:32:25|[ INFO] - paramiko.transport - _log - Connected (version 2.0, client OpenSSH_5.9p1) Traceback (most recent call last): File "<input>", line 1, in <module> File "E:\development\virtenv\lib\site-packages\spur\ssh.py", line 166, in run return self.spawn(*args, **kwargs).wait_for_result() File "E:\development\virtenv\lib\site-packages\spur\ssh.py", line 178, in spawn File "E:\development\virtenv\lib\site-packages\spur\ssh.py", line 268, in _get_ssh_transport raise self._connection_error(error) ConnectionError: Error creating SSH connection Original error: ('10.201.129.56', <paramiko.ecdsakey.ECDSAKey object at 0x1132EF10>, <paramiko.ecdsakey.ECDSAKey object at 0x11366DF0>)

这可能表明SSH报告了连接。失败发生在认证之前/期间。但是,正如我上面说的,密码是相同的-两个连接甚至都使用相同的复制粘贴的pw,在命令行连接上可以正常工作。

0 个答案:

没有答案