簡體   English   中英

paramiko和python ssh

[英]paramiko and python ssh

我正在嘗試將設置ssh連接與主機連接。 這是我的代碼:

def make_connection_paramiko(Username, Password):
    ssh = paramiko.SSHClient()
    hostname = "username@hobbes.cs.ucsb.edu"
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts")))
    try:
        ssh.connect(hostname, port = 22, username = 'username', password = 'password')
    except paramiko.AuthenticationException:
        print "Login failed! %s\t%s" %(username, password)
    except socket.timeout:
        print "Socket connection failed"
        #print str(value) +"\t"+ message
    else:
        print "Login Successful! %s\t%s" %(username, password)
    ssh.close()

但是由於某種原因,我繼續遇到以下錯誤:

Traceback (most recent call last):
  File "pass_crack.py", line 56, in <module>
    begin_cracking(wordlist, username)
  File "pass_crack.py", line 45, in begin_cracking
    make_connection_paramiko(username, "hello")
  File "pass_crack.py", line 29, in make_connection_paramiko
    ssh.connect(hostname, port = 3600, username = 'xxxxxxx', password = 'xxxxxx')
  File "/usr/lib/python2.7/dist-packages/paramiko/client.py", line 282, in connect
    for (family, socktype, proto, canonname, sockaddr) in socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM):
socket.error: [Errno 2] No such file or directory

我正在嘗試使用paramiko與python進行連接,而我正在使用Ubuntu 13.04。 我不確定出現了什么問題,當我嘗試使用pxssh使用相同的主機名,用戶名和密碼值進行連接時,連接是否有效,那么為什么對paramiko不起作用?

提前致謝

回答

這不是主機名:

hostname = "username@hobbes.cs.ucsb.edu"

相反,這是一個連接字符串。 刪除username@部分,它應該再次連接。

更多信息

請記住,您可以隨時查看源代碼 在這里,您可以看到主機名直接傳遞給了原始套接字調用

socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM)

查看socket.getaddrinfo的幫助,我們可以看到它正在嘗試解析實際的主機名,類似於nslookup所需的語法:

>>> print socket.getaddrinfo.__doc__
getaddrinfo(host, port [, family, socktype, proto, flags])
    -> list of (family, socktype, proto, canonname, sockaddr)

Resolve host and port into addrinfo struct.

最后,我建議您考慮在paramiko和其他基礎庫中啟用debugging

>>> import logging
>>> logger = paramiko.util.logging.getLogger()
>>> logger.setLevel(logging.DEBUG)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM