Если вы заботитесь о безопасности подключения к своему серверу, то вам будет интересна эта статья. Рассмотрим пример, как можно настроить авторизацию пользователей по зашифрованным ключам в 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 адрес или доменное имя вашего сервера
Если вы авторизовались, значит у вас получилось настроить сервер и безопасное подключение работает.