Задача: Разобрать как из-под Ubuntu 22.04 Server подключаться по SSH к Mikrotik CRS125-24G-1S (mipsbe) version 6.45.5 в локальной сети.

Это нужно как пред этап понимания каким образом через Ansible взаимодействовать с оборудованием Mikrotik посредством SSH, а то у меня какой-то затык, ну не идет подключение хоты ты тресни.

Шаг №1: На Mikrotik просто включен сервис SSH, а расширенные настройки не активированы:

[us_mikrotik@SW 1-2-4] > ip ssh print                             
           forwarding-enabled: no
  always-allow-password-login: no
                strong-crypto: no
            allow-none-crypto: no
                host-key-size: 2048
[us_mikrotik@SW 1-2-4] >

Шаг №2: Пробую подключить из-под Ubuntu 22.04 Server к Mikrotik и получаю:

ekzorchik@srv-ansible:~$ cat /etc/os-release && uname -a
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
Linux srv-ansible 5.15.0-82-generic #91-Ubuntu SMP Mon Aug 14 14:14:14 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
ekzorchik@srv-ansible:~$
ekzorchik@srv-ansible:~$ ssh -V
OpenSSH_8.9p1 Ubuntu-3ubuntu0.3, OpenSSL 3.0.2 15 Mar 2022
ekzorchik@srv-ansible:~$
ekzorchik@srv-ansible:~$ ssh -l us_mikrotik sw_1-2-4.polygon.local
Unable to negotiate with 192.168.3.5 port 22: no matching host key type found. Their offer: ssh-dss,ssh-rsa
ekzorchik@srv-ansible:~$

Ошибка из-за того, что новая версия SSH не включает по умолчанию поддержку RSA/SHA1, то есть ssh-rsa. Вместо этого ожидается, что сервер будет использовать RSA/SHA-256/512. С более новыми серверами с более свежим SSH проблемы не будет, но в данном случае hostname более старой версии.

ekzorchik@srv-ansible:~$ ssh -l us_mikrotik sw_1-2-4.polygon.local -oHostKeyAlgorithms=+ssh-dss -oStrictHostKeyChecking=no "system routerboard print"
us_mikrotik@sw_1-2-4.polygon.local's password:

если есть запрос на ввод пароля, то значит подключение проходит.

Шаг №3: Теперь дабы не указывать всю длинную строчку подключения можно вынести параметры подключения в файл /etc/ssh/ssh_config для данного хоста:

ekzorchik@srv-ansible:~$ sudo nano /etc/ssh/ssh_config
Host sw_1-2-4.polygon.local
        Port 22
        StrictHostKeyChecking no
        PasswordAuthentication yes
        HostKeyAlgorithms +ssh-dss
ekzorchik@srv-ansible:~$ sudo service ssh restart

и после подключение инициируется

ekzorchik@srv-ansible:~$ ssh -l us_mikrotik sw_1-2-4.polygon.local
us_mikrotik@sw_1-2-4.polygon.local's password:
ekzorchik@srv-ansible:~$

Шаг №4: Можно конечно не в файл ssh_config вынести подключение, а сделать alias для текущего пользователя если под ним предполагается подключение к Mikrotik + можно установить sshpass дабы не вводить пароль:

ekzorchik@srv-ansible:~$ sudo apt-get install -y sshpass
ekzorchik@srv-ansible:~$ sshpass -V|head -n1
sshpass 1.09
ekzorchik@srv-ansible:~$ nano ~/.bashrc
#mikrotik
alias sw_1-2-4='sshpass -p Aa1234567aA ssh -o "HostKeyAlgorithms +ssh-dss" -o "StrictHostKeyChecking no" us_mikrotik@sw_1-2-4.polygon.local -p 22' 
ekzorchik@srv-ansible:~$ source ~/.bashrc

Шаг №5: Инициирую подключение к оборудованию Mikrotik + запуска команды:

ekzorchik@srv-ansible:~$ sw_1-2-4 "system routerboard print"
       routerboard: yes
             model: CRS125-24G-1S
     serial-number: 5D0505AFD22A
     firmware-type: ar9344
  factory-firmware: 3.24
  current-firmware: 6.45.5
  upgrade-firmware: 6.45.5

ekzorchik@srv-ansible:~$

Шаг №6: А если на Mikrotik включены расширенные настройки по части SSH:

[us_mikrotik@SW 1-2-4] > ip ssh set strong-crypto=yes

тогда уже подключение не пройдет

ekzorchik@srv-ansible:~$ ssh -l us_mikrotik sw_1-2-4.polygon.local -oHostKeyAlgorithms=+ssh-dss -oStrictHostKeyChecking=no
Unable to negotiate with 192.168.3.5 port 22: no matching host key type found. Their offer: ssh-rsa

изменяем алгоритм: ssh-rsa и тогда подключение проходит

ekzorchik@srv-ansible:~$ ssh -l us_mikrotik sw_1-2-4.polygon.local -oHostKeyAlgorithms=+ssh-rsa -oStrictHostKeyChecking=no 
us_mikrotik@sw_1-2-4.polygon.local's password: 

значит и изменяем: либо в /etc/ssh/ssh_config или в ~/.bashrc,

к примеру, в /etc/ssh/ssh_config:

ekzorchik@srv-ansible:~$ sudo nano /etc/ssh/ssh_config
Host sw_1-2-4.polygon.local
        Port 22
        StrictHostKeyChecking no
        PasswordAuthentication yes
       HostKeyAlgorithms +ssh-rsa
       PubkeyAcceptedKeyTypes +ssh-rsa 
ekzorchik@srv-ansible:~$ sudo service ssh restart
ekzorchik@srv-ansible:~$ ssh -l us_mikrotik sw_1-2-4.polygon.local
us_mikrotik@sw_1-2-4.polygon.local's password:

к примеру в ~/.bashrc:

ekzorchik@srv-ansible:~$ nano ~/.bashrc
mikrotik
alias sw_1-2-4='sshpass -p Aa1234567aA ssh -o  "HostKeyAlgorithms +ssh-rsa" -o "PubkeyAcceptedKeyTypes +ssh-rsa" -o "StrictHostKeyChecking no" us_mikrotik@sw_1-2-4.polygon.local -p 22' 
ekzorchik@srv-ansible:~$ source ~/.bashrc
ekzorchik@srv-ansible:~$ sw_1-2-4 "system routerboard print"
       routerboard: yes
             model: CRS125-24G-1S
     serial-number: 5D0505AFD22A
     firmware-type: ar9344
  factory-firmware: 3.24
  current-firmware: 6.45.5
  upgrade-firmware: 6.45.5
ekzorchik@srv-ansible:~$

Отлично, просто я раньше не сталкивался с этим и поэтому был не сведущ, у меня резервным копирование Mikrotik(ов) занимаются PowerShell скрипты сделанные на основе заметке "Преднастройка резервного копирования Mikrotikов через PowerShell"

Как видите у меня на блогах *.ekzorchik.ru все заметки связаны друг с другом, так что став подписчиком Вы ощущите в полную меру богатство доступной Вам информации или обратитесь ко мне я реализую Ваш задачу за Вас на n’ое количество денег.

На этом заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.