Поскольку атаки методом перебора становятся все более распространенными, лучше предотвратить попытки злоумышленников угадать ваш пароль. Вот почему так важно настроить аутентификацию с помощью ключей SSH на вашем Linux-сервере. Использование аутентификации на основе ключей намного безопаснее и практически никогда не может быть угадано кем-либо еще. Кроме того, она очень проста в настройке. Давайте приступим к этому.
1. Создание собственного SSH-ключа
На локальной машине необходимо сгенерировать новую пару ключей, чтобы настроить аутентификацию по SSH-ключу. Для этого выполним:
ssh-keygen
Вы можете нажимать клавишу Enter до тех пор, пока ключ не будет создан. Или, если вы хотите, вы можете установить пароль на шаге:
Enter passphrase (empty for no passphrase): Enter same passphrase again:
Запишите этот пароль, так как он потребуется для каждого доступа к серверу.
2. Скопируйте ключ на сервер Linux с помощью ssh-copy-id
После того как ключ скопирован, есть еще одна команда, с помощью которой вы можете скопировать ключ на сервер без необходимости редактировать/добавлять файл authorized_keys
вручную. Для этого выполните следующую команду:
ssh-copy-id user@host -p port_number
Не забудьте изменить имя пользователя user
на ваше настоящее имя пользователя, а host
– на имя хоста или IP-адрес вашего сервера. Это автоматически скопирует ваш открытый ключ на ваш сервер, после чего вы можете попробовать зайти на сервер по ssh. У вас не должно появиться запроса на ввод пароля, и вы автоматически войдете в систему. Чтобы проверить это, выполните команду:
ssh user@host -p port_number
2.1. Копирование ключа при недоступности ssh-copy-id
В некоторых системах команда ssh-copy-id
может быть недоступна, и в этом случае вам придется делать это через традиционное SSH-соединение. Для этого мы запустим следующую готовую команду. Она будет работать в системах Linux:
cat ~/.ssh/id_rsa.pub | ssh user@host -p port_number "mkdir -p ~/.ssh && cat >>~/.ssh/authorized_keys && chmod 700 -R ~/.ssh"
Только не забудьте изменить имя пользователя user
на ваше настоящее имя пользователя, а host
– на имя хоста или IP-адрес вашего сервера. Это должно сделать всю работу за вас – одна строка скопирует ваш локальный ключ на ваш сервер и вставит его в ваш файл authorized_keys
.
После выполнения этой команды вы можете проверить его, попытавшись войти по SSH на ваш сервер:
ssh user@host -p port_number
Настройка аутентификации ключа SSH в Windows
В Windows нет команд, которые мы показали в шаге 2.1, поэтому здесь описано, что нужно сделать, чтобы настроить аутентификацию ключа SSH, если вы используете Windows. Шаги этого руководства предназначены для читателей, работающих под управлением Windows 11.
Сначала откройте приложение Terminal (не от имени администратора). Затем выполните команду ssh-keygen.exe
, например, так:
PS C:\Users\rosehosting>ssh-keygen.exe
Вы получите несколько вопросов. Вы можете использовать каталог по умолчанию, а затем не задавать парольную фразу (вы также можете задать ее, если хотите, но вам придется вводить парольную фразу каждый раз, когда вы хотите аутентифицироваться с помощью своего ключа. Вот как выглядит наш вывод:
Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\rosehosting/.ssh/id_rsa): Created directory 'C:\\Users\\rosehosting/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\rosehosting/.ssh/id_rsa Your public key has been saved in C:\Users\rosehosting/.ssh/id_rsa.pub
Теперь у вас есть сохраненная пара ключей. Теперь вам нужно скопировать открытый ключ (тот, что под именем id_rsa.pub
) на ваш сервер. Сначала распечатайте открытый ключ в терминале и скопируйте его:
PS C:\Users\rosehosting>cat .\.ssh\id_rsa.pub
Затем выполните SSH на вашем сервере:
PS C:\Users\rosehosting>ssh.exe user@host -p port_number
Выполните эту команду, чтобы создать папку, в которой будет храниться открытый ключ SSH:
mkdir -p ~/.ssh
После этого вы можете открыть новый файл с помощью удобного для вас текстового редактора. Мы будем использовать nano:
nano ~/.ssh/authorized_keys
Вставьте ваш открытый ключ в файл, сохраните и выйдите. Затем вам нужно обновить права доступа к новой папке и файлу:
chmod 700 -R ~/.ssh
После этого ваш доступ к ключу должен быть полностью настроен. Теперь вы можете выйти из сервера и попытаться войти снова. Вам больше не должно быть предложено ввести пароль.
4. Отключение проверки подлинности пароля на сервере (ВАРИАНТ)
Если вы хотите еще больше обезопасить свой сервер, вы можете отключить на нем аутентификацию по паролю. Это означает, что все пользователи системы должны будут использовать ключи ssh для входа в нее. Ключи SSH более безопасны, чем пароли, поскольку они обеспечивают более надежный и устойчивый метод аутентификации. В отличие от паролей, которые могут быть подвержены атакам перебора и другим уязвимостям, ключи SSH используют для аутентификации пару криптографических ключей. Это значительно затрудняет получение доступа неавторизованными пользователями, повышая общую безопасность. Кроме того, SSH-ключи избавляют от необходимости передавать пароли по сети, снижая риск перехвата и несанкционированного доступа.
Чтобы отключить проверку подлинности пароля, вам нужно отредактировать файл конфигурации SSH-сервера на вашем сервере:
sudo nano /etc/ssh/sshd_config
В нем вы должны найти строку PasswordAuthentication
– установите ее в значение no:
PasswordAuthentication no
После завершения редактирования и закрытия файла вы можете перезапустить службу SSH, и все будет в порядке:
systemctl restart ssh
Вот и все! Вы успешно настроили свой сервер на использование SSH-ключей вместо паролей. Это сделает ваш сервер еще более защищенным от возможных атак методом грубой силы, от того, что кто-то узнает ваш пароль и т.д.
Комментарии (0)