Я покажу как использовать встроенный SSH клиент на MikroTik. И как с помощью SSH ключей подключиться с одного MikroTik на другой.
Подключение и отключение
Для подключения из одного MikroTik к другому можно использовать протокол ssh. Делается это с помощью встроенного ssh клиента «/system ssh». Вот пример:
/system ssh user=admin address=172.21.0.12
После выполнения этой команды, у вас будет запрошен пароль от пользователя admin на удаленном роутере. И после ввода пароля вы подключитесь к нему.
Чтобы отключиться от удаленного роутера используйте команду:
:quit
Выполнение команд и скриптов
Для того чтобы подключиться к удалённому Mikrotik, выполнить команду и отключиться от него, можно использовать такую конструкцию: : /system ssh user= <пользователь> address= <ip-адрес> command=»<команда>». Например так:
/system ssh user=admin address=172.21.0.12 command="/system/script/ run script1"
Скрипт при этом должен находится на удалённом роутере. Или вместо скрипта можно выполнить любую команду.
При этом также потребуется вводить пароль, что не всегда удобно. А если подключаться нужно не интерактивно, то использовать пароль вообще не возможно. В этом случае используются ssh ключи.
А ещё при не интерактивном выполнении вместо /system ssh нужно использовать /system ssh-exec. Это делается например в планировщике заданий /system/scheduler вот так:
/system ssh-exec user=admin address=172.21.0.12 command="/system/script/ run script1"
Подключение с помощью ssh ключей
К сожалению RouterOS не позволяет сгенерировать ssh ключи. Так что для генерации нужно использовать другую операционную систему.
Создание ключей на Windows
Для создания SSH ключей на Windows будем использовать «PuTTY Key Generator«. Но для начала вам нужно скачать и установить приложение «PuTTY«. Скачать его можете от сюда.
После установки, запустите программу «PuTTYgen.exe» и нажмите на кнопку «Generate«:
Дальше начните перемещать мышку, чтобы сгенерировать ssh ключи.
После генерации вы увидите такое окно:
Скопируйте выделенную часть, вставьте в текстовый файл и сохраните под названием ssh.pub (или под каким-нибудь другим, но чтобы было понятно что это публичный ключ).
Для сохранения приватного ключа нажмите в верхнем меню кнопку «Conversions» и «Export OpenSSH key«:
Сохраните файл под именем ssh.private (чтобы было понятно, что это приватный ключ).
Загрузка ключей на роутеры
Теперь переходим к роутерам MikroTik. Подключаемся к ним используя WinBox. Дальше нажимаем в левом меню кнопку «File» и загружаем оба файла на роутер с которого будем подключаться:
А на роутер к которому будем подключаться нужно загрузить только публичный ключ:
Настройка ключей
Пока мы лишь загрузили файлы ключей на роутеры, но не заставили их работать. А чтобы это сделать нужно на обоих роутерах перейти в /Sustem/Users.
На том роутере с которого мы будем подключаться нужно перейти на вкладку «SSH Private Keys«. А на роутере к которому мы планируем подключаться нужно перейти на вкладку «SSH Keys«.
Вот так импортируется приватный ключ. Мы нажимаем на кнопку «Import SSH Private Key«, затем заполняем поля, и нажимаем кнопку » Import SSH Private Key» (только уже в другом окне):
Если вы перепутаете приватный ключ с публичным, то система даст вам импортировать ключи. Но при подключении по ssh вы увидите вот такую ошибку:
error: "0D078079:" lib(13):func(120):reason(121)
По аналогии импортируем бубличный ключ на роутере к которому будем подключаться:
Теперь вы сможете подключиться с одного роутера на другой по ssh без запроса пароля, используя ssh ключи. Например сможете выполнить вот такую команду:
/system ssh user=admin address=172.21.0.12 command=":log info Hello!"
На втором роутере в логах увидите такие записи:
Первая запись о подключении к нему по ssh, вторая запись сделана нашей командой, а третья об отключении.
Но запомните, что не интерактивно, то-есть в Scheduler или Watchdog лучше использовать — /system ssh-exec.
Создание ключей на Linux
Дополнительно я вам покажу как сгенерировать ssh ключи на Linux. Для этого используйте следующую команду:
# ssh-keygen -t rsa -m pem -f /root/ssh-for-mikrotik
После чего у вас появится пара ключей в каталоге /root:
# ls -l /root/ total 9 -rw------- 1 root root 1823 Nov 23 08:25 ssh-for-mikrotik -rw-r--r-- 1 root root 395 Nov 23 08:25 ssh-for-mikrotik.pub
Файл без разрешения — это приватный ключ, а файл с разрешением .pub — публичный ключ.
Загрузите их на роутеры и импортируйте ключи точно также как и ключи, которые вы делали на Windows.
Возможно Вам также будет интересна и другая статья: MikroTik. Основы написания скриптов.
Если остались вопросы, задавайте их в комментариях.