@astar7922

Почему python netmiko скрипт под линукс и виндой ведет себя по разному?

Использую в работе свой модуль, в котором разные функции для манипулирвания сетевым оборудованием Cisco и Huawei
использую в том числе для бэкапа конфигов
скрипт работает на сервере под управлением CentOS7 python + netmiko

Хуавей свичи были S5731-H24T4XC Version 5.170 V200R019C10SPC500, пришли новые S5731-S48T4X Version 5.170 V200R021C00SPC100, добавил их в список для бэкапа, в логах ошибка:

paramiko.transport ERROR: Exception: Incompatible ssh peer (no acceptable host key)

попробовал в консоле питона прямо ввести
import paramiko
transport = paramiko.Transport("my_some_ip")
transport.connect(username = "some_user", password = "some_password")


выдает ошибку
/home/ some_user /py39-env/lib/python3.9/site-packages/paramiko/transport.py in connect(self, hostkey, username, password, pkey, gss_host, gss_auth, gss_kex, gss_deleg_creds, gss_trust_dns)
   1347         )
   1348
-> 1349         self.start_client()
   1350
   1351         # check host key if we were given one


/home/ some_user /py39-env/lib/python3.9/site-packages/paramiko/transport.py in start_client(self, event, timeout)
    700                 e = self.get_exception()
    701                 if e is not None:
--> 702                     raise e
    703                 raise SSHException("Negotiation failed.")
    704             if event.is_set() or (


/home/ some_user /py39-env/lib/python3.9/site-packages/paramiko/transport.py in run(self)

   2084         try:
   2085             try:
-> 2086                 self.packetizer.write_all(b(self.local_version + "\r\n"))
   2087                 self._log(
   2088                     DEBUG,

/home/ some_user /py39-env/lib/python3.9/site-packages/paramiko/packet.py in write_all(self, out)

    359                 iteration_with_zero_as_return_value += 1
    360             if n < 0:
--> 361                 raise EOFError()
    362             if n == len(out):
    363                 break

EOFError:


к старому оборудованию, с другим VRP подключаюсь без ошибок, конфигурации ssh server у них одинаковые, с этого же сервера просто по ssh подключаюсь

попробовал скрипт со своей Windows10 машины - все прекрасно работает
И на винде и на Линуксе Python 3.9.7 netmiko 4.1.2 paramiko был и там и там одинаковый 2.12 но я уже на Линуксе обновил до 3,0,0 (но насколько я понимаю netmiko базируется на paramiko, но у него свой код, а он у меня одинаковый)
видимо open-ssh надо копать, но я же с линуксового сервера по ssh могу подключаться, а python по идее использует ту же библиотеку что и клиент ssh

Что это может быть?
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
@astar7922 Автор вопроса
я не привел здесь код конфига (типа вопрос програмистский по питону юниксу) но на специализированном форуме хуавей подсказали
на новых свичах в конфиге была строчка
ssh server publickey rsa_sha2_512 rsa_sha2_256
а первоисточник говорит следующее

https://support.huawei.com/hedex/hdx.do?docid=EDOC...

If a public key algorithm is specified in the ssh server publickey command, the SSH server can use the specified public key algorithm and cannot use other public key algorithms. For example, if the ssh server publickey dsa command is run, the SSH server can use the DSA algorithm and cannot use the ECC and RSA algorithms.


короче убрал ее, и все заработало
конечно правильней будет обновить openssl я думаю причина в нем на юниксе 1.0.2.k-fips 26 Jan 2017 на винде 1.0.2.u-fips 20 Dec 2019

но пока не до этого
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы