【问题标题】:How to connect to localhost using Python's paramiko?如何使用 Python 的 paramiko 连接到 localhost?
【发布时间】:2015-02-24 21:32:30
【问题描述】:

我对实现客户端-服务器通信完全陌生,我正在尝试从一个使用 Python 的 paramiko 模块的非常基本的示例开始。我要做的就是从一个终端窗口向我机器的本地主机发送一个简单的字符串,然后在另一个终端窗口中从那里检索它。

这是我目前所拥有的:

import paramiko

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname='localhost', username='myun', password='mypwd')

stdin, stdout, stderr = ssh.exec_command('echo "Hello"')

print stdout

ssh.close()

得到的是这样的:

Traceback (most recent call last):
  File "./ssh.py", line 13, in <module>
    ssh.connect(hostname='localhost', username='myun', password='mypwd')
  File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 251, in connect
    retry_on_signal(lambda: sock.connect(addr))
  File "/usr/local/lib/python2.7/site-packages/paramiko/util.py", line 270, in retry_on_signal
    return function()
  File "/usr/local/lib/python2.7/site-packages/paramiko/client.py", line 251, in <lambda>
    retry_on_signal(lambda: sock.connect(addr))
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 61] Connection refused

谁能告诉我这里哪里出错了?为什么我无法使用正确的用户名和密码连接到 localhost?

【问题讨论】:

  • 您是否在本地运行 SSH 服务器?
  • 嗯...好问题。我如何确定是否是这种情况?

标签: python ssh localhost paramiko


【解决方案1】:

如果 SSH 接受 localhost 上的连接,这应该可以正确连接。 OpenSSH 默认情况下会这样做。检查 /etc/ssh/sshd_config 和您的防火墙。另一种可能性是“localhost”在 /etc/hosts 中没有正确配置。尝试使用 127.0.0.1 或 ::1。

请注意,要获取实际的标准输出,请使用:

print stdout.read()

【讨论】:

  • 我检查了 /etc/hosts 列出了正确的配置:127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost
  • 这应该让我担心吗? cat: /etc/ssh/sshd_config: No such file or directory
  • 可能是ssh服务器没有安装。安装它然后尝试。
猜你喜欢
  • 1970-01-01
  • 2017-05-29
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
相关资源
最近更新 更多