Задача: Разобрать как из-под 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.