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

в настоящее время у меня есть старый ключ SSH, загруженный на сервер. Проблема в том, что я потерял свой

5 ответов


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

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

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

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

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


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

виновником ДТП является gpg-keyring-daemon:

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

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

сбой усугубляется тем, что новые клиенты ssh автоматически пробуют все ключи в вашем ssh-агенте, когда подключение к хосту.
Если их слишком много, сервер отклонит соединение.
И поскольку gnome-keyring-daemon решил для себя, сколько ключей вы хотите, чтобы ваш ssh-агент имел, и загрузил их автоматически, и не позволит вам удалить их, вы тост.

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


возможное решение:

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

другое решение:

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

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

этот коммент на самом деле предполагает:

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


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

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


самым простым способом было бы

ssh-keygen -R hostname

Я открыл приложение "пароли и ключи" в моем Unity и удалил ненужные ключи из Безопасные Клавиши ->клавиши OpenSSH И они автоматически были удалены ssh-agent-l Как хорошо.


Если вы пытаетесь выполнить операцию, связанную с 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