Введение
Secure Shell (SSH) — это криптографический сетевой протокол, используемый для безопасного соединения между клиентом и сервером и поддерживающий различные механизмы аутентификации.
Двумя наиболее популярными механизмами являются аутентификация на основе пароля и аутентификация на основе открытого ключа. Использование ключей SSH более безопасно и удобно, чем традиционная аутентификация по паролю.
В этом руководстве мы опишем, как генерировать ключи SSH в системах Debian 9. Мы также покажем вам, как настроить аутентификацию на основе ключей SSH и подключиться к вашим удаленным серверам Linux без ввода пароля.
Создание ключей SSH в Debian
Перед созданием новой пары ключей SSH проверьте наличие существующих ключей SSH на клиентском компьютере Debian. Вы можете сделать это, выполнив следующую команду ls:
ls -l ~/.ssh/id_*.pub
Если вывод приведенной выше команды содержит что-то вроде No such file or directory
или no matches found
, это означает, что у вас нет ключей SSH, и вы можете перейти к следующему шагу и создать новую пару ключей SSH.
Если есть существующие ключи, вы можете использовать их и пропустить следующий шаг или сделать резервную копию старых ключей и создать новые.
Начните с создания новой 4096-битной пары ключей SSH с вашим адресом электронной почты в качестве комментария с помощью следующей команды:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Вывод будет выглядеть следующим образом:
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@server_ip_address's password:
После аутентификации пользователя открытый ключ ~/.ssh/id_rsa.pub
будет добавлен в файл ~/.ssh/authorized_keys
удаленного пользователя, и соединение будет закрыто.
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.
Если ssh-copy-id
недоступна на локальном компьютере, вы можете использовать следующую команду для копирования открытого ключа:
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Войдите на сервер, используя ключи 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
Найдите следующие директивы и измените их следующим образом:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Сохраните и закройте файл, нажав CTRL + X, затем Y, чтобы сохранить изменения, а затем ENTER, если вы используете nano.
Перезапустите службу SSH с помощью следующей команды:
sudo systemctl restart ssh
На данный момент аутентификация на основе пароля отключена.
Вывод
В этом руководстве вы узнали, как сгенерировать новую пару ключей SSH и как настроить аутентификацию на основе ключей SSH. Вы можете добавить один и тот же ключ на несколько удаленных серверов.
Мы также показали вам, как отключить аутентификацию по паролю SSH и добавить дополнительный уровень безопасности на ваш сервер.
По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию снизит риск автоматических атак.
Если вы регулярно подключаетесь к нескольким системам, вы можете упростить рабочий процесс, определив все подключения в файле конфигурации SSH.