我对实现客户端 - 服务器通信非常陌生,并且正在尝试使用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?
答案 0 :(得分:1)
如果SSH接受localhost上的连接,则应正确连接。 OpenSSH默认情况下会这样做。检查/ etc / ssh / sshd_config和防火墙。另一种可能性是&#34; localhost&#34;没有在/ etc / hosts中正确配置。尝试使用127.0.0.1或:: 1。
请注意,要获取实际的标准输出,请使用:
print stdout.read()