Авторизация на сервере с использованием SSH-ключей
При установлении соединения с удалённым сервером, будь то через SSH или другие протоколы, критически важно подтвердить свою идентичность для получения доступа к системе. Существует несколько методов аутентификации, но наиболее безопасным и удобным считается использование SSH-ключей. В данном материале мы разберём принципы работы данной технологии, её преимущества перед парольной аутентификацией, а также порядок настройки на практике. Авторизация с ключами (или метод, основанный на паре открытого и закрытого ключа) — это способ идентификации, при котором вместо обычного пароля используются два криптографических ключа: Когда вы подключаетесь, сервер сравнивает ваш закрытый ключ с открытым ключом, который у него есть. Если они совпадают, вы получаете доступ. Это похоже на то, как если бы у вас был ключ от двери, а серверу достаточно проверить, подходит ли он к замку. Создание ключевой пары Установка открытого ключа на сервер Процесс аутентификации Такая система обеспечивает высокий уровень безопасности, поскольку закрытый ключ никогда не передаётся по сети, а открытый ключ не может быть использован для дешифровки данных. Этот гайд поможет вам настроить безопасный способ подключения к серверу через SSH с использованием ключей вместо паролей. Мы рассмотрим процесс на примере Linux/macOS, но те же принципы применимы и для Windows. где: В результате вы получите: Альтернативный способ: Если всё настроено верно, вы войдёте автоматически. При наличии пароля для ключа система запросит его ввод. После этих действий доступ к серверу будет возможен только с использованием SSH-ключей, что значительно повысит безопасность системы. Для удобства работы можно использовать Это позволит не вводить пароль от приватного ключа при каждом подключении. Следуя этим рекомендациям, вы сможете обеспечить надёжную и безопасную работу с SSH-ключами. Что такое авторизация с ключами?
Закрытый ключ (private key)
— ваш личный "секрет", который остаётся только у вас и никому не разглашается.Открытый ключ (public key)
— своего рода "замок", который вы устанавливаете на сервере, чтобы он распознавал вас как авторизованного пользователя. Чем это лучше паролей?
Принцип работы SSH-аутентификации по ключам:
На вашем компьютере генерируется пара ключей — открытый и закрытый. Это можно сделать с помощью команды ssh-keygen
. Важно: закрытый ключ хранится только на вашем компьютере, а открытый нужно передать на сервер.
Открытый ключ добавляется в специальный файл authorized_keys
на сервере. Это можно сделать через команду ssh-copy-id
или вручную, скопировав содержимое файла с открытым ключом.
При попытке подключения происходит следующее: Настройка SSH-доступа с использованием ключей
1. Создание ключевой пары
ssh-keygen -t rsa -b 4096
-t rsa
определяет тип ключа-b 4096
устанавливает длину ключа для повышенной безопасности~/.ssh/id_rsa
)id_rsa
) - храните в надёжном местеid_rsa.pub
) - будет отправлен на сервер 2. Установка ключа на сервере
ssh username@server_ip
ssh-copy-id username@server_ip
~/.ssh/authorized_keys
на сервереid_rsa.pub
3. Тестирование подключения
exit
ssh username@server_ip
4. Усиление безопасности (опционально)
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Важные рекомендации:
Рекомендации по работе с SSH-ключами
Основные правила безопасности
Работа с SSH-агентом
ssh-agent
:eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
Устранение типичных проблем
chmod 700 ~/.ssh
и chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh
и chmod 600 ~/.ssh/authorized_keys
/etc/ssh/sshd_config
должны быть строки:PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
ssh -v username@server
sudo tail -f /var/log/auth.log
Дополнительные меры безопасности
- Отключите вход по паролю: PasswordAuthentication no
AllowUsers username@192.168.1.1
authorized_keys
на наличие посторонних ключей