Несколько SSH ключей одна учетная запись
- Нояб 21, 2025
- 72
Использование нескольких SSH ключей для одной учетной записи
Протокол SSH (Secure Shell) является стандартным средством безопасного удаленного доступа к серверам и системам. По умолчанию для аутентификации к одной учетной записи на сервере (например, user@example.com) используется один приватный ключ. Однако в реальных сценариях часто возникает необходимость использовать несколько разных ключей для доступа к одному и тому же аккаунту. Эта статья подробно объяснит, зачем это нужно и как правильно настроить такую конфигурацию.
Зачем нужно несколько SSH ключей для одной учетной записи?
Существует несколько распространенных причин, по которым пользователь или администратор может захотеть использовать несколько ключей:
- Разделение по устройствам: У вас может быть рабочий ноутбук, домашний компьютер и сервер, с каждого из которых вам нужен доступ. Использование отдельного ключа для каждого устройства повышает безопасность: в случае компрометации одного устройства вы можете отозвать только его ключ, не затрагивая другие.
- Разделение по уровню доступа или проектам: Вы можете использовать один ключ для рутинных задач и другой, более защищенный (например, на аппаратном токене), для критических операций.
- Автоматизация и CI/CD: Для скриптов и систем непрерывной интеграции/развертывания (CI/CD) часто создаются отдельные ключи-делегаты с ограниченными правами.
- Ротация ключей: При переходе на новый, более надежный ключ вы можете добавить его на сервер, не удаляя старый, чтобы обеспечить бесперебойный доступ во время переходного периода.
Как это работает?
При подключении по SSH клиент пытается аутентифицироваться с помощью приватных ключей, которые он знает. Сервер, в свою очередь, хранит у себя соответствующие им публичные ключи в файле ~/.ssh/authorized_keys для нужной учетной записи. Каждая строка в этом файле представляет один разрешенный публичный ключ.
Ключевой момент: Серверу не важно, сколько ключей находится в файле authorized_keys. Он будет принимать любой из них для аутентификации пользователя. Таким образом, чтобы разрешить доступ по нескольким ключам, достаточно просто добавить все соответствующие публичные ключи в этот файл, каждый с новой строки.
Практическая реализация: добавление ключей на сервер
Предположим, у вас есть два ключа: id_rsa_laptop (для ноутбука) и id_ed25519_desktop (для рабочего стола).
- Получите публичные ключи. На вашей локальной машине публичные ключи обычно находятся в файлах с расширением
.pub.cat ~/.ssh/id_rsa_laptop.pub # Скопируйте вывод этой команды cat ~/.ssh/id_ed25519_desktop.pub # Скопируйте вывод этой команды - Добавьте ключи на сервер. Подключитесь к серверу любым доступным способом (например, по паролю или уже существующему ключу) и отредактируйте файл
~/.ssh/authorized_keysв вашей домашней директории.
Вставьте скопированные публичные ключи в этот файл, каждый с новой строки. Сохраните файл и закройте редактор.nano ~/.ssh/authorized_keys - Проверьте права доступа. Крайне важно, чтобы у файлов и папок были правильные права доступа, иначе SSH-сервер проигнорирует их из-за соображений безопасности.
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Теперь вы можете аутентифицироваться на сервере с помощью любого из добавленных приватных ключей.
Настройка SSH-клиента для использования нескольких ключей
Хотя сервер готов принимать несколько ключей, ваш SSH-клиент должен знать, какой именно ключ использовать для подключения, особенно если ключи имеют нестандартные имена или расположены в нестандартных местах. Для этого используется файл конфигурации ~/.ssh/config на вашей локальной машине.
Создайте или отредактируйте этот файл:
nano ~/.ssh/config
Рассмотрим две основные стратегии настройки.
Стратегия 1: Явное указание ключа для конкретного хоста
Это самый простой и распространенный способ. Вы указываете, какой приватный ключ использовать при подключении к определенному серверу.
Host myserver.com HostName myserver.com User myusername IdentityFile ~/.ssh/id_rsa_laptop
Host my-backup-server
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/id_ed25519_desktop
Стратегия 2: Использование нескольких ключей для одного хоста
Бывают случаи, когда вы хотите, чтобы клиент попробовал несколько ключей по очереди для одного подключения. Для этого используется директива IdentitiesOnly.
Пример: Вы добавили на сервер два ключа, но при подключении SSH-клиент по умолчанию предлагает только свой стандартный ключ (id_rsa), который на сервере не разрешен.
Решение: Явно указать клиенту, какие ключи пытаться использовать.
Host myserver.com HostName myserver.com User myusername IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa_laptop IdentityFile ~/.ssh/id_ed25519_desktop
Директива IdentitiesOnly yes говорит клиенту не использовать ключи из ssh-agent по умолчанию, а ограничиться только теми, что указаны в директивах IdentityFile. При подключении к myserver.com клиент будет поочередно пробовать оба указанных ключа.
Рекомендации по безопасности
- Защищайте приватные ключи: Все приватные ключи должны иметь строгие права доступа (
chmod 600 ~/.ssh/your_private_key). Никогда никому их не передавайте. - Используйте парольные фразы (passphrases): Всегда устанавливайте надежную парольную фразу для каждого приватного ключа. Это шифрует ключ на диске и защищает его в случае кражи.
- Регулярно проводите аудит: Периодически проверяйте файл
~/.ssh/authorized_keysна сервере и удаляйте ключи, которые больше не используются (например, с утерянных или списанных устройств). - Используйте современные алгоритмы: Отдавайте предпочтение ключам на основе алгоритма Ed25519, а в случае использования RSA устанавливайте длину ключа не менее 4096 бит.
Заключение
Использование нескольких SSH-ключей для одной учетной записи — это мощная и гибкая практика, которая усиливает безопасность и удобство работы. Она позволяет эффективно разделять доступ между устройствами и сценариями использования. Правильная настройка как на стороне сервера (через файл authorized_keys), так и на стороне клиента (через файл ~/.ssh/config) делает этот процесс seamless и надежным. Следуя описанным шагам и рекомендациям по безопасности, вы сможете легко настроить такую систему для своих нужд.