SSH подключение к Linux через ssh ключи

SSH сервер выполняет аутентификацию пользователя либо по паролю, либо через ssh ключ. Пароли передаются по безопасному каналу, но пароли либо просты, что облегает перебор, либо если сложные, то неудобны для ввода каждый раз. Аутентификация по ключу SSH более надежна и проста в использовании.

Технология SSH ключей схожа с сертификатами, состоит из открытого и закрытого ключа. Секретный ключ сохраняется на стороне клиента и не должен быть доступен кому-либо еще. Открытый ключ загружается на удаленный сервер, к которому необходимо получить доступ и используется для шифрования сообщений, который расшифровывается закрытым ключом.

Технология аутентификации:

Клиент --> инициирует SSH подключение
Сервер --> отвечает зашифрованным открытым ключом сообщением
Клиент --> Расшифровывает закрытым ключом и отправляет ответ
Сервер --> Ответ совпадает - аутентификация пройдена

Создаем ключи для подключения к Linux через putty (Windows)

Скачивайте puttygen с официального сайта —
https://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe.

После запуска нажимаем на кнопку Generate и двигаем мышкой, пока не сформируется пара ключей — открытый и закрытый.

Key passphrase - Можно задать пароль для приватного ключа.
Save public key - Кнопка сохранения публичного ключа.
Save private key - Кнопка сохранения приватного ключа.
SSH-2 RSA 2048 - Тип ключа и его длинна.

Формат файла ключей, которые создает puttygen не подходит для openssh Linux, поэтому содержимое открытого ключа в нужном формате копируем из окна puttygen.

Далее создаем необходимый файл:

# mkdir ~/.ssh
# chmod 0700 ~/.ssh
# touch ~/.ssh/authorized_keys
# chmod 0644 ~/.ssh/authorized_keys

В файл authorized_keys вставляем скопированный ключ из окна puttygen.

В putty сертификат нужно указать в разделе Connection -> SSH -> Auth.

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

Создаем ключи для подключения к Linux через Linux

Генерируем пару ключей ssh на клиенте откуда будем подключаться. Будет предложено выбрать расположение и парольную фразу. Расположение по умолчанию ~/.ssh/

# ssh-keygen

Cгенерируются ключи: приватный — id_rsa и публичный — id_rsa.pub.

На клиентской машине (откуда будет подключение) создаем ssh подключение по логин/паролю на сервер

# ssh username@name_or_IP

Если подключаемся первый раз, соглашаемся с предложением продолжить подключение.

Копируем публичный ключ на удаленный сервер:

# cat ~/.ssh/id_rsa.pub | ssh username@remotehost_or_IP "mkdir -p ~/.ssh && cat >> .ssh/authorized_keys"

Далее при подключении к этому удаленному серверу не будет запрашиваться пароль. Аутентификация будет проходить по ключу ssh.

Отключение аутентификации через логин/пароль

Если необходимо после обмена ключами запретить подключение по SSH через логин/пароль, в файле настройки SSH etc/ssh/sshd_config редактируем:

PasswordAuthentication no
Top