的paramiko和python SSH(paramiko and python ssh)

2019-10-29 20:37发布

我试图连接建立与主机机器的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与蟒蛇进行连接,而我使用Ubuntu 13.04。 我不知道什么是错的,当我试图使用相同的值作为主机名,用户名和密码,使用连接pxssh的连接工作,所以为什么不与它的paramiko工作?

提前致谢

Answer 1:

回答

这不是一个主机名:

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.

最后,我建议在寻找使debugging中的paramiko,和其他底层库:

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


文章来源: paramiko and python ssh