我在python中有这样的功能:
def test_ssh(host, username, password):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=username, password=password)
问题是:
test_ssh('127.0.0.1', 'root', 'hello')
有效
但test_ssh('localhost', 'root', 'hello')
不起作用
我得到的错误是:
ssh: Could not resolve hostname localhost: Name or service not known
造成这种情况的原因是什么?感谢
答案 0 :(得分:0)
尝试提供ssh.connect(hostname=host, username=username, password=password)
答案 1 :(得分:0)
由于我的评论没有多大意义(将它们放在一起)(假设您的操作系统是Linux) -
您的错误原因 -
ssh:无法解析主机名localhost:名称或服务未知
是 - HOSTNAME的DNS解析没有提供正确的IP(注释#1)
使用此命令(终端)进行测试 -
主机 localhost
你可以尝试什么 -
编辑 / etc / hosts 文件,在此文件中输入IP和主机名。这应该解决你的主机名和IP 喜欢这个 -
#IP hostname [[alias1] [...]]
127.0.0.1 localhost
172.22.0.9 mymachine.home mymachine
最后一个很棒的链接 - http://bit.ly/IHhA1R
修改的
可能的工作流程 -
bash $ 挖掘 HOSTNAME
始终使用相同的工作流程获取用户提供的HOSTNAME的最新IP,使用IP而不是HOSTNAME连接
答案 2 :(得分:0)
实际上,当主机可以解决时,这甚至无效。
首先尝试:
import socket
socket.getaddrinfo('google.com', None)
socket.getaddrinfo('localhost', None)
如果google.com返回带有地址的元组,并且localhost也正确返回 - 那么您的系统设置是正确的。我不知道为什么,但我遇到了这个问题并且通过了socket.getaddrinfo(host, None)[0][1][4]
。