Хочу по аналогии с моими доверенными системами (Ubuntu 12.04/14.04 Server) подключаться и к устройствам Mikrotik задействуя ssh.
Все дальнейшие действия происходят на моей рабочей/домашней системе Ubuntu 12.04.5 Desktop amd64 ноутбука Lenovo ThinkPad E555.
Первым делом активирую службу удаленного безопасного подключения через SSH (port 22) (и FTP, port 21) на устройстве Mikrotik
ekzorchik@navy:~$ winbox – 192.168.1.9 – IP – Services
– находим строку где присутствует надпись ssh & ftp и если строка затемнена активируем. Затем отключаемся от Mikrotik‘а.
Далее на системе Ubuntu генерируем/проверяем наличие пары публичного ключа хоста и приватного:
ekzorchik@navy:~$ ssh-keygen -t dsa
ekzorchik@navy:~$ ls .ssh/id_dsa*
.ssh/id_dsa .ssh/id_dsa.pub
После чего передаем публичный ключ на устройство mikrotik следующим образом:
ekzorchik@navy:~$ cp /home/ekzorchik/.ssh/id_dsa.pub iddsa
ekzorchik@navy:~$ ftp 192.168.1.9
Connected to 192.168.1.9.
220 ekzorchik FTP server (MikroTik 6.33.5) ready
Name (192.168.1.9:ekzorchik): ekzorchik
331 Password required for ekzorchik
Password:
230 User ekzorchik logged in
Remote system type is UNIX.
ftp>
передаю файл публичного ключа на mikrotik:
ftp> put iddsa
local: iddsa remote: iddsa
200 PORT command successful
150 Opening ASCII mode data connection for ‘/iddsa’
226 ASCII transfer complete
605 bytes sent in 0.00 secs (13427.7 kB/s)
ftp> bye
221 Closing
подключаюсь к устройству mikrotik через winbox, открываю консоль командной строки и скопированный выше файл отпечатка системы Ubuntu 12.04.5 Desktop amd64 импортирую в хранилище ключей удаленного доверенного доступа устройства Mikrotik:
ekzorchik@navy:~$ winbox – 192.168.1.9 (Login: admin, Password = 712mbddr@) – New Terminal -
[admin@ekzorchik] > user ssh-keys import public-key-file=iddsa
На заметку: если на устройстве Mikrotik заведен еще один пользователь с правами Администратора, то тогда нужно указать что публичный ключ с системы Ubuntu (на которой запускалась команда ssh-keygen -t dsa) применим для этого пользователя:
ekzorchik@navy:~$ ssh-keygen -t dsa
[ekzorchik@ekzorchik] > user ssh-keys import public-key-file=iddsa user=ekzorchik
На заметку: импортировать ключ на устройстве Mikrotik можно также не подключаясь через winbox, а просто подключить из локальной сети посредством утилиты telnet:
ekzorchik@navy:~$ telnet 192.168.1.9
Trying 192.168.1.9…
Connected to 192.168.1.9.
Escape character is ‘^]’.
MikroTik v6.33.5 (stable)
Login: ekzorchik
Password:
[ekzorchik@ekzorchik] > user ssh-keys import public-key-file=iddsa user=ekzorchik
[admin@ekzorchik] > quit
interrupted
Отлично, теперь продемонстрирую как будет происходить аутентификация с системы Ubuntu 12.04.5 Desktop amd64 на устройстве mikrotik при безопасном подключении через ssh:
ekzorchik@navy:~$ ssh -l ekzorchik 192.168.1.9
The authenticity of host ‘192.168.1.9 (192.168.1.9)’ can’t be established.
RSA key fingerprint is 38:67:29:0f:ad:91:6a:95:68:80:f7:4a:be:5c:61:2d.
Are you sure you want to continue connecting (yes/no)? Yes
Warning: Permanently added ‘192.168.1.9’ (RSA) to the list of known hosts.
ekzorchik@192.168.1.9’s password:
[ekzorchik@ekzorchik] > system routerboard print
;;; Firmware upgraded successfully, please reboot for changes
to take effect!
routerboard: yes
model: 2011UiAS-2HnD
serial-number: 614A052CFEA6
firmware-type: ar9344
current-firmware: 3.24
upgrade-firmware: 3.24
Выхожу и пробую подключить еще раз, пароль при подключении спрашиваться не должен:
[ekzorchik@ekzorchik] > quit
interrupted
Connection to 192.168.1.9 closed.
ekzorchik@navy:~$ ssh -l ekzorchik 192.168.1.9
ekzorchik@192.168.1.9’s password:
хм, странно – а почему у меня все же происходит запрашивание пароля, опять документация по настройке врет или же просто многое якобы само собой разумеющееся опускается, я же в свою очередь хочу все для себя разобрать:
Оказалось все очень просто, до этого я обновлял устройство и по окончании процедуры не перезагрузил устройство, кстати в выводе выше как раз присутствует информационное сообщение, что устройство обновлено и для активации изменений его нужно перезагрузить. Перезагрузив, пробую подключиться и вуаля – подключение через ssh происходит без какого либо запроса пароля, как раз то что мне и нужно было:
ekzorchik@navy:~$ ssh -l ekzorchik 192.168.1.9
192.168.1.9 via ssh
[ekzorchik@ekzorchik] >
[ekzorchik@ekzorchik] > quit
interrupted
Connection to 192.168.1.9 closed.
Еще интересным стоит выделить возможность подключившись выполнить команду не переходя всецело в консоль устройства Mikrotik:
ekzorchik@navy:~$ ssh ekzorchik@192.168.1.9 system routerboard print
routerboard: yes
model: 2011UiAS-2HnD
serial-number: 614A052CFEA6
firmware-type: ar9344
current-firmware: 3.24
upgrade-firmware: 3.24
ekzorchik@navy:~$ ssh ekzorchik@192.168.1.9 file print
# NAME TYPE SIZE CREATION-TIME
0 advanced-tools-6.32… package 100.1KiB jan/02/1970 05:05:55
1 skins directory jan/01/1970 03:00:01
2 auto-before-reset.b… backup 78.1KiB jul/27/2015 18:50:44
3 pub directory jan/02/1970 03:06:19
4 hotspot-6.32.1-mips… package 184.1KiB jan/02/1970 05:07:44
5 system-6.32.1-mipsb… package 6.8MiB jan/02/1970 05:08:01
6 ekzorchik-20151218-… backup 49.0KiB dec/17/2015 21:48:50
7 dhcp-6.32.1-mipsbe.npk package 168.1KiB jan/02/1970 05:07:35
8 autosupout.rif .rif file 491.7KiB jan/27/2016 14:16:47
посредством этой возможности можно сделать хоть и корявый но как на первый шаг сгодится скрипт, который будет делать бекап устройства, забирать/отправлять по почте/ftp бекап на доверенное хранилище.
А теперь если же нужно забрать с устройства Mikrotik к примеру конфигурационный файл устройства со всеми настройками или же просто бекап, то сделать это можно следующим образом:
[ekzorchik@ekzorchik] > system backup save name=backup
Saving system configuration
Configuration backup saved
[ekzorchik@ekzorchik] > file print
# NAME TYPE SIZE CREATION-TIME
0 skins directory jan/01/1970 07:00:02
1 disk4 disk dec/15/2015 18:30:44
2 Mikrotik_27012015.b… backup 13.0KiB jan/27/2016 20:17:52
3 backup.backup backup 13.0KiB jan/27/2016 20:19:56
ekzorchik@navy:~$ sftp ekzorchik@192.168.1.9:backup.backup
Connected to 192.168.1.9.
Fetching /backup.backup to backup.backup
/backup.backup 100% 13KB 13.0KB/s 00:00
ekzorchik@navy:~$ dir -sh backup.backup & file backup.backup
[1] 30479
16K backup.backup
backup.backup: data
[1]+ Готово dir -sh backup.backup
А если сделать маленький скрипт на системе Ubuntu посредством которого уже сделаем бекап на устройстве с генерирование текущей даты и времени и скопируем его себе на рабочую станцию:
ekzorchik@navy:~$ nano backup_192_168_1_9
#!/bin/bash
bfile=$(date +%d%m%y_%H_%M)
ssh admin@192.168.1.9 system backup save name=Backup192_168_1_9_$bfile
sftp admin@192.168.1.9:Backup192_168_1_9_$bfile.backup
ekzorchik@navy:~$ chmod +x backup_192_168_1_9
Запускаю данный скрипт:
ekzorchik@navy:~$ ./backup_192_168_1_9
Configuration backup saved
Connected to 192.168.1.9.
Fetching /Backup192_168_1_9_270116_17_03.backup to Backup192_168_1_9_270116_17_03.backup
/Backup192_168_1_9_270116_17_03.backup 100% 13KB 13.0KB/s 00:00
ekzorchik@navy:~$ dir -sh Backup192_168_1_9_270116_17_03.backup && file $_
16K Backup192_168_1_9_270116_17_03.backup
Backup192_168_1_9_270116_17_03.backup: data
Отлично – это полный бекап, а теперь нужно добавить еще в скрипт экспорт всех настроек в виде скрипта выполнив который при восстановлении произойдет восстановление функционала до рабочего уровня если вдруг что-то произошло (вышло из строя/неосторожная настройка и т.д.)
#!/bin/bash
bfile=$(date +%d%m%y_%H_%M)
efile=$(date +%d%m%y_%H_%M)
ssh admin@192.168.1.9 system backup save name=Backup192_168_1_9_$bfile
ssh admin@192.168.1.9 export file=Export192_168_1_9_$efile.rsc
sftp admin@192.168.1.9:Backup192_168_1_9_$bfile.backup
sftp admin@192.168.1.9:Export192_168_1_9_$efile.rsc
ekzorchik@navy:~$ ./backup_192_168_1_9
Configuration backup saved
Connected to 192.168.1.9.
Fetching /Backup192_168_1_9_270116_17_12.backup to Backup192_168_1_9_270116_17_12.backup
/Backup192_168_1_9_270116_17_12.backup 100% 16KB 15.9KB/s 00:00
Connected to 192.168.1.9.
Fetching /Export192_168_1_9_270116_17_12.rsc to Export192_168_1_9_270116_17_12.rsc
/Export192_168_1_9_270116_17_12.rsc 100% 244 0.2KB/s 00:00
ekzorchik@navy:~$ dir -sh Export192_168_1_9_270116_17_12.rsc && file $_
4.0K Export192_168_1_9_270116_17_12.rsc
Export192_168_1_9_270116_17_12.rsc: ASCII text, with CRLF line terminators
Ну вот уже лучше, не правда ли, я посредством скрипта и активированной возможности аутентификации на устройстве Mikrotik посредством публичного ключа с доверенного хоста провожу без парольный вход, делаю бекап и экспорт всех команд посредством которых настроено оборудование (применяется в целях изучения, а как сделать ту или иную настройку не через Winbox или же Web-интерфейс, а задействовав командную строку – так более продуктивно и приобретается опыт), как на устройство так и на локальную систему Ubuntu 12.04.5 Desktop amd64
Ну а что теперь, считаю данную заметку завершенной, в дальнейшем на основе этой я рассмотрю другую еще более интересную и практическу, а пока собственно все – с уважением автор блога, ekzorchik.