Введение
Удаление SSH-ключа в Linux — это критически важный процесс, особенно когда нам нужно удалить или заменить SSH-ключ. Мы можем иметь намерение отозвать ключи, чтобы повысить безопасность наших SSH-соединений или перейти на новую конфигурацию SSH-безопасности. В этой статье мы рассмотрим, какие методы могут быть использованы для удаления SSH-ключей, их преимущества и недостатки, а также возможные альтернативные решения. Кроме того, мы закрепим процесс примерами и ответим на часто задаваемые вопросы в конце статьи.
1. Что такое SSH-ключ и почему его может потребоваться удалить?
SSH (Secure Shell) — это протокол и набор инструментов для безопасного подключения к удаленным серверам. Метод "аутентификация на основе ключей" предлагает безопасное и удобное использование. Ниже приведены ситуации, когда может потребоваться удаление SSH-ключа в Linux:
- Безопасность: если вы беспокоитесь, что ваш ключ был скомпрометирован или создан с использованием устаревших алгоритмов.
- Изменение пользователя: ситуации, связанные с передачей сервера, добавлением нового члена в команду или отказом в доступе к проекту для выходящего специалиста.
- Новая конфигурация: необходимость повторного создания ключей для более сильных алгоритмов (например, Ed25519) или другой конфигурации SSH-безопасности.
Процесс удаления SSH-ключа можно использовать не только в рисковых ситуациях, но и как часть регулярной политики безопасности. Удаление неиспользуемых или ставших ненужными ключей сокращает возможные векторы кибератак.
2. Основные шаги для удаления SSH-ключа
Для удаления SSH-ключа или его отзыва обычно нужно обратить внимание на две точки:
- Удаление ключей на локальном компьютере: как правило, это удаление закрытых (private) и открытых (public) ключей из директории
~/.ssh/. - Удаление сохранённых ключей на удалённом сервере: очистка строк в файле
~/.ssh/authorized_keysна стороне сервера.
Обе эти операции должны выполняться синхронно. Даже если вы удалите локальный ключ, если информация на сервере останется, злоумышленник, получивший доступ к серверу, все равно сможет представлять угрозу.
2.1 Удаление локального ключа
На системах Linux или macOS пары SSH-ключей обычно находятся в папке ~/.ssh. Примеры:
~/.ssh/id_rsa(Закрытый ключ)~/.ssh/id_rsa.pub(Открытый ключ)~/.ssh/id_ed25519(Закрытый ключ)~/.ssh/id_ed25519.pub(Открытый ключ)
Будьте осторожны при удалении. Если имя было задано специально (mycustomkey и т. д.), необходимо точно определить правильные файлы. Пример команды:
cd ~/.ssh/
rm id_rsa id_rsa.pub
# или
rm id_ed25519 id_ed25519.pub
Для нового проекта или при переходе к другому пользователю достаточно удалить эти файлы. Однако, если вы работаете с несколькими ключами на одном сервере, следует быть особенно внимательным, чтобы не удалить неправильно файл.

2.2 Удаление ключа на удалённом сервере
При переходе к шагу удаления SSH-ключа в Linux на сервере, необходимо удалить строку, соответствующую пользователю, с которым вы подключаетесь, из файла ~/.ssh/authorized_keys. Например, можно выполнить следующие действия:
# Подключитесь к серверу.
ssh [email protected]
# Затем перейдите в свой домашний каталог и откройте файл authorized_keys
nano ~/.ssh/authorized_keys
# Найдите строку, которую вы хотите удалить, и удалите её.
Например, содержимое id_rsa.pub будет представлено в виде длинной строки в файле authorized_keys. Найдите и полностью удалите эту строку или строки. Когда вы сохраните и выйдете, доступ для данного ключа к серверу будет отозван.
2.3 Специальный метод: обратное действие с ssh-copy-id
ssh-copy-id обычно используется для добавления ключей. Хотя опция "удалить" отсутствует в стандартной комплектации, тем не менее ключи, добавленные с помощью ssh-copy-id, соответствуют определённым строкам в файле authorized_keys, что требует их ручного удаления. То есть нет поддержки прямой команды, подобной ssh-copy-id -r для удаления ключей. Поэтому вам необходимо очищать authorized_keys с помощью редактора или создавая скрипт.
3. Преимущества и недостатки удаления SSH-ключа в Linux
Перед тем как выполнять какую-либо процедуру, важно взвесить позитивные и негативные стороны, что поможет избежать возможных проблем. Вот преимущества и недостатки процесса удаления ключей:
3.1 Преимущества
- Увеличение безопасности: отзывая неиспользуемые или потенциально скомпрометированные старые ключи, вы уменьшаете поверхность для атак.
- Чистое управление: легко завершить доступ вышедших участников команды. Это повышает управляемость.
- Регулярное обновление: регулярное удаление и повторное создание могут обеспечить использование современных шифровальных алгоритмов.
3.2 Недостатки
- Ошибочное удаление ключа: удаление неверного файла или строки может привести к потере доступа к системам.
- Временная потеря доступа: в процессе операции неопытные пользователи могут столкнуться с трудностями повторного соединения.
- Затраты рабочего времени: управление этой процедурой для множества серверов или пользователей может занять много времени.
Тем не менее, вы должны учитывать как преимущества, так и неожиданные риски, а также выполнять процедуры тщательно и продуманно.
4. Альтернативные или дополнительные методы
Кроме удаления SSH-ключей, существуют и другие подходы. Просмотр этого раздела может быть полезен в особых сценариях:
4.1 Обновление пароля
Если вы хотите изменить только пароль SSH, основываясь на конфигурации безопасности, вы можете использовать команду ssh-keygen -p для обновления пароля. Это увеличивает уровень безопасности без необходимости полностью удалять ключ.
4.2 Список аннулирования ключей (KRL)
В версиях OpenSSH 6.2 и выше доступна функция Списка аннулирования ключей (KRL). Это позволяет сохранять список, которые ключи недействительны или какие сертификаты не будут приняты на сервере. KRL может быть создан с помощью команд, таких как ssh-keygen -k -f revoked_keys, и настроен SSH в соответствии с этим.
4.3 Блокировка с помощью конфигурационного файла SSH
На стороне сервера вы можете заблокировать пользователей или определенные типы ключей, используя некоторые параметры в файле /etc/ssh/sshd_config. Например, установки, такие как PasswordAuthentication no, позволяют разрешать только доступ по ключам, а для DMZ или тестовых систем можно создавать другие политики. Однако это метод, который изменяет общий протокол доступа, а не просто "удаляет ключ".
5. Конкретные примеры и советы
Рассмотрим несколько примеров того, как можно действовать:
- Пример команды разработчиков: у вас команда из 5 человек. Для вышедшего человека может быть достаточно удалить только его строку из файла
authorized_keys. Кроме того, его локальный закрытый ключ также должен быть удалён. - Передача сервера: когда инфраструктура изменяется, вы отзывете все SSH-ключи со старого сервера и будете использовать только актуальные ключи на новом сервере. Это предотвратит повторное появление уязвимостей в отключенных системах.
- Сценарий аварийной ситуации: если есть подозрения на компрометацию ключа, немедленно выполните удаление SSH-ключа в Linux, чтобы предотвратить несанкционированный доступ. Затем создайте новый ключ и добавьте его для соединения с вашей системой.
Эти примеры показывают, насколько важно принимать решение об удалении ключей в разных масштабах и ситуациях.
6. Внешние и внутренние ссылки
Если вам нужна более полная информация о SSH, вы можете найти всей документацию на официальном сайте OpenSSH (DoFollow).
Кроме того, в нашей категории Linux на сайте вы можете ознакомиться с разными примерами конфигураций.
7. Резюме и вывод
Удаление SSH-ключа в Linux — один из необходимых этапов для обеспечения безопасности и управляемости. Вы можете удалить SSH-ключ по причинам нарушения безопасности, изменений в команде или просто для упорядочивания. Процедура в основном состоит из двух этапов: очистки ваших локальных ключей и удаления соответствующих строк из файла authorized_keys на сервере.
На этом этапе рекомендуется действовать осторожно, управлять процессами конфигурации безопасности SSH с помощью письменной политики и обеспечивать координацию внутри команды. Использование современных криптографических методов, периодическая проверка и отключение неиспользуемых ключей создают важный барьер против кибератак. Помните, что небольшая оплошность может привести к серьёзному нарушению данных.
Часто задаваемые вопросы (FAQ)
1. Нужно ли, чтобы сеанс был активен для выполнения удаления SSH-ключа в Linux?
В целом, да. Чтобы удалить SSH-ключ, вам необходимо иметь доступ к серверу. Если сеанс активен, вы можете редактировать файл authorized_keys, а на локальной стороне вы можете удалять файлы в вашей папке ~/.ssh. Однако вы также можете редактировать без сеанса, если у вас есть доступ другим способом (например, через консоль root).
2. Что нужно делать после удаления SSH-ключа, чтобы повторно подключиться?
Если вы удалили старый ключ, подключение с его помощью станет невозможным. Если вы планируете новую конфигурацию SSH-безопасности, вам нужно сгенерировать новые ключи с помощью команды ssh-keygen и добавить открытый ключ в файл authorized_keys на сервере.
3. Я использую один и тот же ключ на нескольких серверах, нужно ли мне удалить его на всех?
Если вы хотите полностью деактивировать ключ, да, нужно удалить записи authorized_keys на всех серверах. В противном случае доступ всё ещё может быть доступен на разных серверах.