Настройка авторизации с помощью сертификатов в SSH
Довольно часто возникает необходимость настроить вход на удаленный сервер без участия пользователя. (Например если вход выполняется из скрипта или пароль был сгенерирован злобным админом и нет возможности запомнить это безобразие). Я делал это для связки Mac OS OpenSSH Server и Ubuntu Linux. Итак последовательность действий на клиенте следующая:
- Проверяем, есть ли в домашней папке папка .ssh, для этого выполняем команду
ls -ld ~/.ssh
Если папки не существует, то создадим ее
mkdir ~/.ssh
-
Переходим в созданную папку:
cd ~/.ssh
-
Генерируем открытый и закрытый ключ
ssh-keygen -b 1024 -t dsa -f id_dsa -P ''
Эта команда сгенерирует открытый и закрытый ключи. Флаг -b устанавливает длину ключей в 1024 бита, -t определяет использование DSA алгоритма, -f устанавливает имя файла, а P '' устанавливает нулевой пароль к закрытому ключу, что дает возможность использовать его для автоматического логина. -
Создадим файл authorized_keys2:
touch authorized_keys2
-
Скопируем в этот файл открытый ключ:
cat id_dsa.pub >> authorized_keys2
-
Установим закрытому ключу правильные права:
chmod 400 id_dsa
-
Копируем файл на удаленный сервер:
scp authorized_keys2 username@remotemachine:~/.ssh/
Первоисточник:
Setting Up Key-Based SSH Login