Как удалить ключ?
в настоящее время у меня есть старый ключ SSH, загруженный на сервер. Проблема в том, что я потерял свой
5 ответов
обратите внимание, что есть по крайней мере два отчета об ошибке для ssh-add -d/-D
не удаление ключей:
- "отчет об ошибке Debian #472477:
ssh-add -D
не удаляет ключ SSH изgnome-keyring-daemon
" - "Ubuntu:
ssh-add -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
.- перейти к
вы должны быть в состоянии do~/.ssh
папка и переместить все ключевые файлы, кроме того, который вы хотите идентифицировать с в отдельную папку под названием backup. При необходимости вы также можете открыть seahorse и удалить ключи оттуда.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-логин.
Я открыл приложение "пароли и ключи" в моем 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