Обратите внимание, что существует по крайней мере два сообщения об ошибках для ssh-add -d/-D
не удаления ключей:
Точная проблема:
ssh-add -d/-D
удаляет только вручную добавленные ключи из gnome-keyring.
Нет способа удалить автоматически добавленные ключи.
Это оригинальная ошибка, и она по-прежнему присутствует.
Так, например, если у вас есть две разные автоматически загруженные идентификационные данные ssh, связанные с двумя разными учетными записями GitHub - скажем, для работы и для дома - нет способа переключаться между ними. GitHub использует первый подходящий вариант, поэтому вы всегда появляетесь на GitHub как «домашний» пользователь, и у вас нет возможности загружать вещи в рабочие проекты.
Разрешение ssh-add -d
применять к автоматически загружаемым ключам (и ssh-add -t X
изменять время жизни автоматически загружаемых ключей) восстановит поведение, ожидаемое большинством пользователей.
Точнее, по вопросу:
Виновником является gpg-keyring-daemon
:
- Он подрывает обычную работу ssh-agent, в основном просто для того, чтобы он мог выдать красивое окно, в которое можно ввести фразу-пароль для зашифрованного ключа ssh.
- Он просматривает ваш
.ssh
каталог и автоматически добавляет любые ключи, которые он находит, вашему агенту.
- И это не позволит вам удалить эти ключи.
Как мы ненавидим это? Давайте не будем считать пути - жизнь слишком коротка.
Ошибка осложняется тем, что новые ssh-клиенты автоматически пробуют все ключи в вашем ssh-agent при подключении к хосту.
Если их слишком много, сервер отклонит соединение.
И так как gnome-keyring-daemon для себя решил, сколько ключей вы хотите иметь у вашего ssh-агента, и автоматически их загрузил, И НЕ ПОЛУЧИТ УДАЛИТЬ ИХ, вы тост.
Эта ошибка все еще подтверждается в Ubuntu 14.04.4, всего два дня назад (21 августа 2014 г.)
Возможный обходной путь:
- Делать,
ssh-add -D
чтобы удалить все ваши добавленные вручную ключи. Это также блокирует автоматически добавленные ключи, но не очень полезно, так gnome-keyring
как попросит вас разблокировать их в любом случае, когда вы попытаетесь сделать a git push
.
- Перейдите в свою
~/.ssh
папку и переместите все свои ключевые файлы, кроме того, который вы хотите идентифицировать, в отдельную папку, которая называется резервной копией. При необходимости вы также можете открыть морского конька и удалить ключи оттуда.
- Теперь вы должны быть в состоянии обойтись
git push
без проблем.
Другой обходной путь:
То, что вы действительно хотите сделать, это gpg-keyring-daemon
вообще отключить .
Перейти System --> Preferences --> Startup Applications
и отменить выборSSH Key Agent (Gnome Keyring SSH Agent)
флажок " - вам нужно прокрутить вниз, чтобы найти его.
Вы все равно получите ssh-agent
, только теперь он будет вести себя разумно: ключи не загружаются автоматически, вы запускаете ssh-add, чтобы добавить их, и если вы хотите удалить ключи, вы можете это сделать. Представьте себе, что.
Этот комментарий фактически предлагает:
Решение состоит в том, чтобы gnome-keyring-manager
не запускаться никогда, что было странным образом затруднено, в конечном итоге, путем удаления разрешения на выполнение программного файла.
Райан Лю добавляет еще один интересный случай в комментариях :
На случай, если это кому-нибудь поможет: я даже попытался удалить id_rsa
иid_rsa.pub
файлы вообще, а ключ был все еще показывает вверх.
Оказывается, gpg-agent
кэшировал их в ~/.gnupg/sshcontrol
файле ; Я должен был вручную удалить их оттуда.
Это тот случай , когда был добавлен , как здесь .keygrip
ssh-add -d
?