gpt4 book ai didi

python-3.x - 使用 Paramiko 的基本 SSH 连接失败

转载 作者:行者123 更新时间:2023-12-02 14:26:42 35 4
gpt4 key购买 nike

我正在学习 paramiko 的基础知识,为此我建立了一个基本实验室,在其中将 Ubuntu VM 连接到 EVE-ng 中模拟的路由器。
第一步是通过 ssh-Keygen 在客户端生成 key 对
接下来,我使用以下命令将公钥加载到远程服务器(Cisco 路由器):

ip ssh pubkey-chain
username administrator
key-hash ssh-rsa 97D0E9B5630D05D78EA9531053124BFF
之后,我就可以从 Ubuntu VM 登录到 Cisco 路由器:
$ ssh administrator@192.168.1.1
7206_1.rt#
然后,我从同一个客户端启动了一个 Python shell session 并尝试使用 Paramiko 建立一个 SSH session :
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.1', username='administrator', password='password', key_filename= '/home/administrator/.ssh/id_rsa.pub')
但是这次我得到了以下异常:
Exception: Illegal info request from server
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/paramiko/transport.py", line 2109, in run
handler(self.auth_handler, m)
File "/usr/local/lib/python3.8/dist-packages/paramiko/auth_handler.py", line 661, in _parse_userauth_info_request
raise SSHException("Illegal info request from server")
paramiko.ssh_exception.SSHException: Illegal info request from server

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.8/dist-packages/paramiko/client.py", line 435, in connect
self._auth(
File "/usr/local/lib/python3.8/dist-packages/paramiko/client.py", line 764, in _auth
raise saved_exception
File "/usr/local/lib/python3.8/dist-packages/paramiko/client.py", line 751, in _auth
self._transport.auth_password(username, password)
File "/usr/local/lib/python3.8/dist-packages/paramiko/transport.py", line 1498, in auth_password
raise SSHException("No existing session")
paramiko.ssh_exception.SSHException: No existing session
远程路由器 SSH 调试显示身份验证失败:
*Aug 16 01:18:07.295: SSH2 0: MAC compared for #5 :ok
*Aug 16 01:18:07.299: SSH2 0: input: padlength 16 bytes
*Aug 16 01:18:07.299: SSH2 0: Using method = publickey
*Aug 16 01:18:07.307: SSH2 0: send:packet of length 432 (length also includes padlen of 4)
*Aug 16 01:18:07.307: SSH2 0: computed MAC for sequence no.#5 type 60
*Aug 16 01:18:07.311: SSH2 0: Authenticating 'administrator' with method: publickey
*Aug 16 01:18:07.327: SSH2 0: SSH ERROR closing the connection
*Aug 16 01:18:07.331: SSH2 0: send:packet of length 80 (length also includes padlen of 15)
*Aug 16 01:18:07.331: SSH2 0: computed MAC for sequence no.#6 type 1
*Aug 16 01:18:07.335: SSH2 0: Pubkey Authentication failed for user administrator
*Aug 16 01:18:07.335: SSH0: password authentication failed for administrator
在这一点上,我无法判断问题出在服务器上还是在路由器上,因为在没有 Paramiko 的情况下直接从服务器连接到路由器时一切正常。
谢谢。

最佳答案

好的,看起来默认情况下,Paramiko 在 ~/.ssh/中搜索可发现的私钥文件,如果尝试连接到另一台服务器很好,但由于它试图连接到路由器,因此需要通过将 look_for_keys 设置为 False 来禁用此功能.这解决了我的问题(只要这不是生产环境)。

关于python-3.x - 使用 Paramiko 的基本 SSH 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63385323/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com