2015-02-24 61 views
0

我對實現客戶端 - 服務器通信是全新的,並且正在嘗試使用Python的paramiko模塊開始一個非常基本的示例。我想要做的就是從一個終端窗口向我的機器的本地主機發送一個簡單的字符串,並在另一個終端窗口中從那裏檢索它。如何使用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 

可有人請告知我要去的地方錯在這裏?爲什麼我無法使用正確的用戶名和密碼連接到本地主機?

+2

你是在本地運行的SSH服務器? – 2015-02-24 21:34:15

+0

嗯......很好的問題。我怎麼知道這是否是這種情況? – Pat 2015-02-24 21:40:03

回答

1

如果SSH正在接受本地主機上的連接,則應該正確連接。 默認情況下是OpenSSH。檢查/ etc/ssh/sshd_config和你的防火牆。另一種可能性是「localhost」在/ etc/hosts中沒有正確配置。嘗試使用127.0.0.1或:: 1。

注意,獲得實際的標準輸出,使用方法:

print stdout.read() 
+0

啊,好的...謝謝!我修正了這一點。 – Pat 2015-02-24 21:40:35

+0

我檢查/ etc/hosts中列出了正確的配置: '127.0.0.1 \t本地主機 255.255.255.255 \t broadcasthost :: 1 localhost' – Pat 2015-02-24 21:44:08

+0

如果這種擔心我嗎? 'cat:/ etc/ssh/sshd_config:沒有這樣的文件或目錄' – Pat 2015-02-24 21:46:00