Авторизация с помощью модуля Pam Auth SSH в Linux

Авторизация по ключам SSH в Linux

Если вы заботитесь о безопасности подключения к своему серверу, то вам будет интересна эта статья. Рассмотрим пример, как можно настроить авторизацию пользователей по зашифрованным ключам в Linux.

  • Никто не сможет войти на сервер с Вашей учетной записью, так как им необходимо обладать приватным ключом и кодовой фразой.
  • Администратор сервера может вообще убрать пароль учетной записи, дабы исключить его дискредитацию.
  • Вы можете использовать утилиту ssh-agent и он будет предоставлять аутентификационные данные за Вас.
  • Вы можете устанавливать определенные ограничения, например запрещая перенаправление портов, выполнение определенных программ и т.д.

Типы зашифрованных ключей

При создании ключей Вы указывали опцию -t rsa. Этим параметром мы указываем тип создаваемых ключей. Также возможно создать ключи rsa1, rsa или dsa. Рассмотрим их отличия:

Тип
Аргумент
Имя по умолчанию
Протокол
Пример заголовка
RSA1
-t rsa1
identity
SSH 1 protocol only
1024 35 118118225938285…
RSA
-t rsa
id_rsa
SSH 2 protocol only
ssh-dss AAAAB3nzaC1kc3M…
DSA
-t dsa
id_dsa
SSH 2 protocol only
ssh-rsa AAAAB3NzaC1yc2E…

Для генерации ключей Identity/Pubkey вам понадобится утилита ssh-keygen . Создаём ключи с помощью команды:

ssh-keygen -t rsa # в примере рассматриваем метод шифрования RSA

Generating public/private rsa key pair.
Enter file in which to save the key
(/home/%username%/.ssh/id_rsa): Enter
Enter passphrase (empty for no passphrase): в этой строке можете ввести 
пароль для файла ключей/можно оставить поле пустым, но в таком случае уровень 
безопасности ниже.
Enter same passphrase again: повторите пароль.
Your identification has been saved in
/home/%username%/.ssh/id_rsa.
Your public key has been saved in
/home/%username%/.ssh/id_rsa.pub.
The key fingerprint is: 2c:3f:a4:be:46:23:47:19:f7:dc:74:9b:69:24:4a:44 %username%@mydesktop
cd $HOME/.ssh # перейдём в директорию для просмотра файлов ключей
ls -l

Посмотрим содержимое

cat id_rsa

cat id_rsa.pub

Разрешаем авторизацию в OpenSSH сервере

nano /etc/ssh/sshd_config

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile %h/.ssh/authorized_keys

Приведенные выше значения разрешают аутентификацию Identity/Pubkey для протокола SSH версии 1 и 2, и проверяют наличие публичных ключей в файле $HOME/.ssh/authorized_keys.
Проверьте наличие этих строк в файле конфигурации sshd_config (обычно он находится в каталоге /etc/ssh/), при необходимости добавьте и перезапустите сервис.

cd $HOME/.ssh
scp id_rsa.pub
IP_ADDR_SERVER:/home/%username%/.ssh/id_rsa_myserver.pub
root@ssh-server's password: (enter password)
# Вместо %username% - напишите имя
своего пользователя
cd /home/%username%/.ssh
cat id_rsa_myserver.pub >> authorized_keys
cat authorized_keys
Вывод примерно такой будет, у вас конечно же свой уникальный зашифрованный ключбудет
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAcMJy5nn4ZNcD3L32b7y433Zh2IEAnPtaIsWf4POIKWR9DXiPgr1aGOTtBTgkqRQm4VBiYoEOlXiiOYKTpQ87aSdUXPipn2dqjGn7OfyxYA7oy7i9j7/hYytkyMGx7ROxqD/2WtzU2SZtjs74s/PjxzyBMsrff5M09PsqNypoLLLZas= xahria@mydesktop
Установим права на файл,
чтобы никто не мог его изменять

chmod 600 authorized_keys
Выходим из сервера  

exit

Порядок действий получился таким: мы скопировали публичный ключ RSA на сервер, используя scp (можно любым другим способом). Создаем файл authorized_keys, если каталога .ssh не существует — создаем. Добавляем публичный ключ RSA в файл authorized_keys. Проверяем, устанавливаем права доступа и отключаемся.

Следующее подключение запросит у нас пароль файла ключа, если вы его указали при создании.

ssh IP_ADDR_SERVER
Enter passphrase for key
'/home/%username%/.ssh/id_rsa':

IP_ADDR_SERVER — IP адрес или доменное имя вашего сервера

Если вы авторизовались, значит у вас получилось настроить сервер и безопасное подключение работает.