Secure Shell (SSH) — это криптографический сетевой протокол, используемый для безопасного соединения между клиентом и сервером и поддерживающий различные механизмы аутентификации.

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

В этом руководстве вы узнаете, как генерировать SSH-ключи на Ubuntu, как настроить аутентификацию на основе ключа SSH и подключиться к удаленному серверу Linux без ввода пароля.

Создание ключей SSH в Ubuntu

Прежде чем сгенерировать новую пару ключей SSH, проверьте наличие существующих ключей SSH на клиентском компьютере Ubuntu. Вы можете сделать это, выполнив следующую команду ls :

ls -l ~/.ssh/id_*.pub

Если приведенная выше команда печатает что-то вроде No such file or directoryили no matches foundэто означает, что на вашем клиентском компьютере нет ключей SSH, и вы можете перейти к следующему шагу и сгенерировать пару ключей SSH.

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

Сгенерируйте новую пару ключей SSH длиной 4096 бит, указав свой адрес электронной почты в качестве комментария, набрав:

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

Вывод будет выглядеть примерно так:

Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):

Нажмите Enter, чтобы принять расположение и имя файла по умолчанию.

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

Enter passphrase (empty for no passphrase):

Если вы не хотите использовать кодовую фразу, просто нажмите Enter.

Чтобы убедиться, что ваша новая пара ключей SSH сгенерирована, введите:

ls ~/.ssh/id_*
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub

Скопируйте открытый ключ на сервер

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

Самый простой и рекомендуемый способ скопировать ваш открытый ключ на сервер — использовать утилиту под названием ssh-copy-id. На вашем локальном типе терминала:

ssh-copy-id remote_username@server_ip_address

Вам будет предложено ввести remote_usernameпароль:

remote_username@server_ip_address's password:

После аутентификации пользователя открытый ключ ~/.ssh/id_rsa.pubбудет добавлен к ~/.ssh/authorized_keysфайлу удаленного пользователя, и соединение будет закрыто.

Если по какой-либо причине ssh-copy-idутилита недоступна на вашем локальном компьютере, вы можете использовать следующую команду для копирования открытого ключа:

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod

Войдите на свой сервер, используя ключи SSH

После выполнения описанных выше шагов вы сможете войти на удаленный сервер без запроса пароля.

Чтобы проверить это, попробуйте войти на свой сервер через SSH:

ssh remote_username@server_ip_address

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

Отключение аутентификации по паролю SSH

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

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

Войдите на свой удаленный сервер:

ssh sudo_user@server_ip_address

Откройте файл конфигурации SSH /etc/ssh/sshd_configв текстовом редакторе :

sudo nano /etc/ssh/sshd_config

Найдите следующие директивы и измените их следующим образом:

/etc/ssh/sshd_config

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Когда вы закончите, сохраните файл и перезапустите службу SSH, набрав:

sudo systemctl restart ssh

В этот момент аутентификация на основе пароля отключена.

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