首页 > 解决方案 > 无法使用 Paramiko 包连接到服务器

问题描述

我正在尝试在 Python 中使用带有端口 2022(不是 22)的 SSH 连接到我的服务器。所以我编写了以下使用 Paramiko 包的代码:

import sys
import paramiko

try:
  client = paramiko.SSHClient()
  client.load_system_host_keys()
  client.set_missing_host_key_policy(paramiko.WarningPolicy)
  client.connect('ccap@10.40.2.222', '2022', '', 'ccap')
finally:
  client.close()

但是当我在我的 IDE (PyCharm) 中运行它时,我收到以下错误:

/usr/local/lib/python3.5/dist-packages/paramiko/ecdsakey.py:164:CryptographyDeprecationWarning:对从编码数据中不安全地构造公共数字的支持将在未来版本中删除。请使用 EllipticCurvePublicKey.from_encoded_point self.ecdsa_curve.curve_class(), pointinfo

Traceback(最近一次通话最后一次):
文件“/home/mshapirs/PycharmProjects/OnlineTest.py/OnlineTest.py”,第 9 行,在 client.connect('ccap@10.40.2.222', '2022', '', ' ccap')

文件“/usr/local/lib/python3.5/dist-packages/paramiko/client.py”,第 334 行,在 connect to_try = list(self._families_and_addresses(hostname, port))

文件“/usr/local/lib/python3.5/dist-packages/paramiko/client.py”,第 204 行,在 _families_and_addresses 主机名、端口、socket.AF_UNSPEC、socket.SOCK_STREAM

文件“/usr/lib/python3.5/socket.py”,第 733 行,在 getaddrinfo
中用于 _socket.getaddrinfo(主机、端口、系列、类型、原型、标志)中的 res:

socket.gaierror: [Errno -2] 名称或服务未知

标签: pythonsshparamiko

解决方案


您应该提供用户名作为单独的参数,而不是附加到主机地址。

查看.connect. 它有usernamehostname单独列出。


推荐阅读