SSH авторизация по ключу

SSH авторизация по ключу

Авторизация по ключу ssh прежде всего нужна для автоматизации выполняемых вами задач. Это могут быть периодические задачи, выполняемые по расписанию — бэкапы данных, синхронизация данных. Управление устройствами — пример: биллинг, когда у вас есть система управления биллингом и она взаимодействует с роутером без вашего участия. Смысл сводится к одному — авторизоваться на удаленном хосте без участия пользователя и выполнить какую-нибудь команду.

Принцип простой: генерируется пара ключей — открытый и закрытый. Открытый находится удаленном хосте, закрытый хранится у вас.

Генерация пары ключей

У меня на сервере есть пользователь billing, от имени которого я хочу осуществлять подключения к роутеру и что-нибудь там делать. Для этого выполнить команду
ssh-keygen -t dsa
Дополнительные параметры можно не указывать, оставив все по-умолчанию. Пароль ключа я оставил пустым.

Результатом выполнения команды будут два файла

Где:
id_dsa — это закрытый ключ, который надо хранить как зеницу ока, а в случае его утраты генерировать новую пару ключей.
id_dsa.pub — открытый ключ, который должен быть размещен на удаленном хосте.

Убедитесь, что установлены правильные права доступа:  700 к директории .ssh и 600 к файлу закрытого ключа id_dsa. Проверить можно командой:

Я удалил из результата выполнения команды все лишнее, оставив только то, что нас интересует.
Права «rwx» директории .ssh соответствуют 700,  «rw» файла id_dsa соответствуют 600. Т.е. никто, кроме пользователя billing не имеет право изменять содержимое. То, что мне нужно. В противном случае SSH не позволит использовать этот файл ключей.

Если права доступа установлены некорректно, их надо установить руками:

На этом манипуляции на хосте, с которого планируется подключение, закончены.

Открытый ключ

На удаленном хосте, к которому мы будем подключаться, тоже надо выполнить некоторые действия:

  1. Убедиться, что авторизация по ключам разрешена.
    В конфиге, который обычно лежит тут: «/etc/ssh/sshd_config«, должно присутствовать следующее:

    В случае необходимости правим конфиг и перезапускаем SSH:
  2. Копируем содержимое нашего открытого ключа id_dsa.pub в файл
    /home/[пользователь]/.ssh/authorized_keys
    новой строкой (там уже могут быть авторизованные ключи).

На этом почти все. Осталось проверить. Проверяем:

Первый раз надо в любом случае подключиться руками, т.к. вас спросят, доверяете ли вы «фингерпринту» вашего ключа и вы должны будете утвердительно ответить, после чего удаленный хост будет добавлен в known hosts на постоянной основе.

Теперь вы сможете использовать выполнение команд на удаленных хостах в ваших скриптах с использованием авторизации по ключу без участия пользователя.

Как импортировать ключ на MikroTik, написано в статье MikroTik SSH key.

Реклама: