首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >paramiko和python ssh

paramiko和python ssh
EN

Stack Overflow用户
提问于 2013-11-19 22:09:55
回答 1查看 4.3K关注 0票数 1

我正在尝试将安装程序ssh连接连接到主机。这是我的代码:

代码语言:javascript
复制
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()

但出于某种原因,我继续得到以下错误:

代码语言:javascript
复制
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连接,我使用的是Ubuntu13.04。我不知道是怎么回事,当我试图用相同的值连接主机名、用户名和密码时,连接是有效的,那么为什么它不适用于paramiko呢?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-19 23:55:21

回答

那不是主机名:

代码语言:javascript
复制
hostname = "username@hobbes.cs.ucsb.edu"

相反,这是一个连接字符串。删除username@部分,它应该再次连接。

更多信息

记住,你总是可以看一下源代码的。在这里,您可以看到主机名被传递给直接进入原始套接字调用

代码语言:javascript
复制
socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM)

查看socket.getaddrinfo的帮助,我们可以看到它试图解析一个实际的主机名,类似于nslookup所需的语法

代码语言:javascript
复制
>>> 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

代码语言:javascript
复制
>>> import logging
>>> logger = paramiko.util.logging.getLogger()
>>> logger.setLevel(logging.DEBUG)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20083132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档