我在使用 Python 和 Paramiko 时遇到了一些问题。我想连接到 SSH 服务器以自动读取来自不同系统的一些信息。
我尝试了在这里找到的一些提示,但没有任何效果。我检查了主机文件,使用 brew 重新安装 Python,更新/升级 Python 和 Paramiko,使用我本地主机上的 ssh-server 进行测试。还运行 pip 来更新 paramiko 和 python。
我很困惑。请让我问你。
这是我的工作环境:
- MacOS Sierra 10.12.6
- python 2.7
- eclipse
- SSH 库:Paramiko (paramiko-2.2.1-py2.py3-none-any.whl)
脚本:基本的 Paramiko SSH 连接
'''
Created on 16.09.2017
'''
import sys
import telnetlib
import paramiko
host = '213.000.000.123' #
user = "user"
password = "password"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, user, password)
在 Eclipse 上运行脚本会产生以下输出:
Traceback (most recent call last):
File "/Users/tschaefer/Documents/workspace/PythonCMTSLibs/basicSSHSessionModule.py", line 17, in <module>
ssh.connect(host, user, password)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/paramiko/client.py", line 301, in connect
to_try = list(self._families_and_addresses(hostname, port))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/paramiko/client.py", line 199, in _families_and_addresses
hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM)
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
好的,我找到了 gai=getaddrinfo,还有 getaddrbyname 等等。所以我认为将主机字符串解析为 IP 地址存在问题。但是将 IP 地址解析为 IP 地址是没有意义的。我使用了显式 IP。 直接在 CLI 上使用“ssh 213.000.000.123”命令工作正常。
我还尝试连接到“localhost”或“127.0.0.1”或“google.com”或其他。 hosts-file-entry 没有注释,所以它是事件的。结果:同样的情况。
NSLOOKUP 工作正常,因此 DNS 查找工作正常并且 DNS 服务器可用。
在Eclipse中Python似乎可以找到启动的paramiko Library,但是这个Library有问题。
谁能帮我看看我的眼睛看不到的东西。
非常感谢!
问候
最佳答案
错误信息非常具有误导性。它实际上与 DNS 错误无关。
显然 paramiko 使用的默认端口不是 22。一旦我指定了一个端口,问题就消失了。
port = 22
k = paramiko.RSAKey.from_private_key_file(key_filename)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
hostname = os.environ['DOCKER_EE_MANAGER_NODE']
username = os.environ['UCP_USER']
ssh.connect(hostname, port, username, pkey = k)
有效!享受吧!
关于python - Paramiko SSH 连接错误 : socket. gaierror : [Errno 8] nodename nor servname provided, or not known,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46264064/