Как удалить ключ ssh?

В настоящее время у меня есть старый ключ SSH, загруженный на сервер. Проблема в том, что я потерял каталог ~/.ssh (с оригинальными файлами id_rsa и id_rsa.pub).

Следовательно, я хочу удалить старый ключ SSH непосредственно на сервере и загрузить новый.

Я безуспешно пробовал следующую команду:

$> ssh-add -D

enter image description here

Есть ли способ полностью удалить ключ SSH?

Ответ 1

Обратите внимание, что для ssh-add -d/-D существует не менее двух отчетов об ошибках, не удаляющих ключи:

Точная проблема:

ssh-add -d/-D удаляет только вручную добавленные ключи из gnome-keyring.
Невозможно удалить автоматически добавленные ключи.
Это оригинальная ошибка, и она все еще определенно присутствует.

Итак, например, если у вас есть два разных автоматически загруженных идентификатора SSH, связанных с двумя разными учетными записями GitHub - скажем, для работы и для дома - нет способа переключаться между ними. GitHubtakes первый, который соответствует, поэтому вы всегда являетесь своим "домашним" пользователем GitHub, не имея возможности загружать вещи в рабочие проекты.

Разрешить ssh-add -D применять к автоматически загруженным ключам (и ssh-add -t X, чтобы изменить время жизни автоматически загружаемых ключей), восстановит поведение, ожидаемое большинством пользователей.


Точнее, о проблеме:

Преступник gpg-keyring-daemon:

  • Это подрывает нормальную работу ssh-agent, в основном, так, что может появиться симпатичная коробка, в которую вы можете ввести парольную фразу для зашифрованного ключа ssh.
  • И он лапы через ваш каталог .ssh и автоматически добавляет любые ключи, которые он находит вашему агенту.
  • И это не позволит вам удалить эти ключи.

Как мы ненавидим это? Не считайте пути - жизнь слишком короткая.

Ошибка осложняется тем, что новые клиенты ssh автоматически запускают все ключи вашего ssh-агента при подключении к хосту.
Если их слишком много, сервер отклонит соединение.
И поскольку gnome-keyring-daemon определил для себя, сколько ключей вы хотите, чтобы ваш ssh-агент имел, и автоматически загрузил их, И НЕ ПОЗВОЛЯЕТ УДАЛИТЬ ИХ, вы тосты.

Эта ошибка все еще подтверждена в Ubuntu 14.04.4, как и два дня назад (21 августа 2014 года)


Возможное обходное решение:

  • Сделайте ssh-add -D, чтобы удалить все добавленные вручную ключи. Это также блокирует автоматически добавленные ключи, но не очень полезны, поскольку gnome-keyring попросит вас разблокировать их, когда вы попытаетесь сделать git push.
  • Перейдите в папку ~/.ssh и переместите все ваши ключевые файлы, кроме тех, которые вы хотите идентифицировать, в отдельную папку под названием backup. При необходимости вы также можете открыть морской конь и удалить ключи оттуда.
  • Теперь вы можете сделать git push без проблем.

Другое обходное решение:

Что вы действительно хотите сделать, так это полностью отключить gpg-keyring-daemon.
Перейдите в System --> Preferences --> Startup Applications и снимите флажок "SSH Key Agent (Gnome Keyring SSH Agent)" - вам нужно прокрутить вниз, чтобы найти его.

Вы все равно получите ssh-agent, только теперь он будет вести себя безопасно: никаких автозагрузок ключей, вы не запускаете ssh-add для их добавления, и если вы хотите удалить ключи, вы можете. Представьте себе, что.

Настоящие комментарии на самом деле предлагают:

Решение состоит в том, чтобы сохранить gnome-keyring-manager от начала, что было странно сложно, достигнув наконец, путем удаления разрешения на выполнение программного файла.

Ответ 2

Если вы пытаетесь выполнить операцию, связанную с ssh, и получаете следующую ошибку:

$ git fetch
no such identity: <ssh key path>: No such file or directory

Вы можете удалить отсутствующий ключ ssh из вашего агента ssh следующим образом:

$ eval 'ssh-agent -s'  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key

Ответ 3

Если я не понимаю, вы потеряли свой каталог .ssh, содержащий ваш личный ключ на вашем локальном компьютере, и вы хотите удалить открытый ключ, который был на сервере, и который разрешил вход на основе ключа. В этом случае он будет сохранен в файле .ssh/authorized_keys в вашем домашнем каталоге на сервере. Вы можете просто отредактировать этот файл с помощью текстового редактора и удалить соответствующую строку, если сможете ее идентифицировать (еще проще, если это единственная запись!). Надеюсь, что ключ не был вашим единственным методом доступа к серверу, и у вас есть другой способ входа в систему и редактирования файла. Вы можете вручную добавить новый открытый ключ в файл authorised_keys или использовать ssh-copy-id. В любом случае вам понадобится пароль, настроенный для вашей учетной записи на сервере, или какой-либо другой метод идентификации или доступа для доступа к файлу authorized_keys на сервере.

ssh-add добавляет идентификаторы вашего агента ssh, который обрабатывает управление вашими идентификаторами локально, и "соединение с агентом пересылается через удаленные логины SSH, и поэтому пользователь может использовать привилегии, заданные идентификаторами в любой точке сети в безопасным способом". (справочная страница), поэтому я не думаю, что вы хотите в этом случае. Он не имеет возможности получить ваш открытый ключ на сервере, если у вас нет доступа к указанному серверу с помощью входа ssh, насколько мне известно.

Ответ 4

Я открыл приложение "Пароли и ключи" в своем Unity и удалил ненужные ключи из ключей Secure Keys → OpenSSH И они автоматически были удалены из ssh-agent -l, а также.

Ответ 5

Простейшим способом было бы

ssh-keygen -R hostname

Ответ 6

Я могу подтвердить, что эта ошибка все еще присутствует в Ubuntu 19.04. Обходной путь, предложенный @VonC, сработал отлично, суммируя для моей версии:

  • Нажмите на вкладку Действия в верхнем левом углу
  • .В появившемся окне поиска начните вводить "автозагрузка приложений"
  • Нажмите на значок "Запуск приложений"
  • В появившемся окне выберите приложение менеджера ключей gnome (не могу вспомнить точное имя в графическом интерфейсе, но оно достаточно различимо) и удалите его.

Затем я попытался снова ssh-add -D, и после перезагрузки ssh-add -l сказал мне, что у агента нет идентификаторов. Я подтвердил, что у меня все еще был демон ssh-agent, работающий с ps aux | grep agent. Поэтому я добавил ключ, который чаще всего использую с GitHub (ssh-add ~/.ssh/id_ecdsa), и все хорошо!

Теперь я могу выполнять обычные операции с моим наиболее часто используемым репозиторием, и если мне иногда требуется доступ к другому репозиторию, использующему ключ RSA, я просто выделяю для него один терминал с export GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub". Решено! Благодарим @VonC за указание на ошибку и решение.

Ответ 7

Решение для меня (OpenSuse Leap 42.3, KDE) состояло в том, чтобы переименовать папку ~/.gnupg, которая, очевидно, содержала кэшированные ключи и профили. После выхода из системы KDE/входа в систему ssh-add/agent снова работает, и папка создается с нуля, но старые ключи исчезли.

У меня не было успеха с другими подходами.