【问题标题】:How to connect to Cisco switch over SSH with Python Paramiko如何使用 Python Paramiko 通过 SSH 连接到 Cisco 交换机
【发布时间】:2020-04-04 00:30:41
【问题描述】:

我想编写一个 Python 脚本来创建与交换机 Cisco 的连接。 我使用过 Python 的 Paramiko 模块,但它返回连接错误。

代码:

import paramiko
client=paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname='192.168.1.2', username='cisco',password='cisco')

它返回这个错误:

Traceback (most recent call last):
  File "/home/nicola/.PyCharmCE2019.3/config/scratches/cisco.py", line 11, in <module>
    client.connect(hostname='192.168.1.2', username='cisco',password='cisco')
  File "/home/nicola/PycharmProjects/cisco/venv/lib/python3.7/site-packages/paramiko/client.py", line 446, in connect
    passphrase,
  File "/home/nicola/PycharmProjects/cisco/venv/lib/python3.7/site-packages/paramiko/client.py", line 764, in _auth
    raise saved_exception
  File "/home/nicola/PycharmProjects/cisco/venv/lib/python3.7/site-packages/paramiko/client.py", line 751, in _auth
    self._transport.auth_password(username, password)
  File "/home/nicola/PycharmProjects/cisco/venv/lib/python3.7/site-packages/paramiko/transport.py", line 1509, in auth_password
    return self.auth_handler.wait_for_response(my_event)
  File "/home/nicola/PycharmProjects/cisco/venv/lib/python3.7/site-packages/paramiko/auth_handler.py", line 250, in wait_for_response
    raise e
paramiko.ssh_exception.BadAuthenticationType: Bad authentication type; allowed types: ['publickey']

我使用了linux /home/$USER/.ssh/known_host的文件。

这是错误

raise SSHException("not a valid {} private key file".format(tag))
paramiko.ssh_exception.SSHException: not a valid OPENSSH private key       
file

我已经解决了 RSA 密钥的错误。现在 python 用这个命令接受 RSA 密钥

key=paramiko.RSAKey.from_private_key_file(filename='/home/nicola`/.ssh/sg500.pem')`

但首先我必须创建一个 RSA 有效 pem 密钥文件

ssh-keygen -f known_hosts -m pem

在 known_hosts 文件中只保存了设备的 RSA 密钥

现在我运行命令时出现另一个错误

client.connect(hostname='192.168.1.2',port=22,username='cisco',password='cisco',pkey=key)

错误

  Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/nicola/PycharmProjects/cisco/venv/lib/python3.7/site-packages/paramiko/client.py", line 416, in connect
    self, server_hostkey_name, server_key
  File "/home/nicola/PycharmProjects/cisco/venv/lib/python3.7/site-packages/paramiko/client.py", line 824, in missing_host_key
    "Server {!r} not found in known_hosts".format(hostname)
paramiko.ssh_exception.SSHException: Server '192.168.1.2' not found in known_hosts

【问题讨论】:

  • 看起来交换机只允许使用密钥进行 SSH 连接
  • 我使用 ssh 连接 whit linux shell 和 cisco 设备允许它
  • 如何使用带键的 paramiko?

标签: python cisco


【解决方案1】:

将路由器上生成的 ssh 密钥复制到计算机后,尝试使用它。

import paramiko
client=paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname='192.168.1.2', key_filename=<your path to key>)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 2011-12-30
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2014-10-13
    • 2012-01-13
    相关资源
    最近更新 更多