Należy pamiętać, że istnieje co najmniej dwa raport o błędzie do ssh-add -d/-D
nie usuwania klawiszy:
Dokładny problem to:
ssh-add -d/-D
usuwa tylko ręcznie dodane klucze z gnome-keyring.
Nie ma możliwości usunięcia automatycznie dodanych kluczy.
To jest oryginalny błąd i nadal jest obecny.
Na przykład, jeśli masz dwie różne automatycznie ładowane tożsamości ssh powiązane z dwoma różnymi kontami GitHub - powiedzmy do pracy i do domu - nie ma możliwości przełączania się między nimi. GitHub wybiera pierwszy, który pasuje, więc zawsze pojawia się jako użytkownik „domowy” na GitHub, bez możliwości przesyłania rzeczy do projektów roboczych.
Zezwolenie ssh-add -d
na zastosowanie do kluczy ładowanych automatycznie (i ssh-add -t X
zmiana czasu życia kluczy ładowanych automatycznie) przywróciłoby zachowanie oczekiwane przez większość użytkowników.
A dokładniej, o problemie:
Winowajcą jest gpg-keyring-daemon
:
- Unieważnia to normalne działanie ssh-agent, głównie po to, aby wyświetlić ładne okno, w którym można wpisać hasło do zaszyfrowanego klucza ssh.
- Przeszukuje twój
.ssh
katalog i automatycznie dodaje wszystkie znalezione klucze do twojego agenta.
- I nie pozwoli ci usunąć tych kluczy.
Jak tego nienawidzimy? Nie liczmy dróg - życie jest za krótkie.
Niepowodzenie jest potęgowane, ponieważ nowsi klienci ssh automatycznie próbują wszystkich kluczy w ssh-agent podczas łączenia się z hostem.
Jeśli jest ich zbyt wiele, serwer odrzuci połączenie.
A ponieważ gnome-keyring-daemon sam zdecydował, ile kluczy ma mieć twój ssh-agent, i załadował je automatycznie I NIE POZWALA CI JE USUNĄĆ, jesteś wzniesiony.
Ten błąd jest nadal potwierdzony w Ubuntu 14.04.4, jeszcze dwa dni temu (21 sierpnia 2014)
Możliwe obejście:
- Zrób,
ssh-add -D
aby usunąć wszystkie ręcznie dodane klucze. To również blokuje automatycznie dodane klucze, ale nie jest to zbyt użyteczne, ponieważ gnome-keyring
poprosi cię o ich odblokowanie i tak, gdy spróbujesz zrobić git push
.
- Przejdź do swojego
~/.ssh
folderu i przenieś wszystkie kluczowe pliki z wyjątkiem tego, z którym chcesz się identyfikować, do oddzielnego folderu o nazwie kopia zapasowa. W razie potrzeby możesz również otworzyć konika morskiego i usunąć stamtąd klucze.
- Teraz powinieneś
git push
sobie poradzić bez problemu.
Inne obejście:
To, co naprawdę chcesz zrobić, to gpg-keyring-daemon
całkowicie wyłączyć .
Przejdź do System --> Preferences --> Startup Applications
i usuń zaznaczenie pola „ SSH Key Agent (Gnome Keyring SSH Agent)
” - aby je znaleźć, musisz przewinąć w dół.
Nadal będziesz mieć ssh-agent
, tylko teraz będzie zachowywał się normalnie: żadne klucze nie są ładowane automatycznie, uruchamiasz ssh-add, aby je dodać, a jeśli chcesz usunąć klucze, możesz. Wyobraź sobie, że.
Ten komentarz faktycznie sugeruje:
Rozwiązaniem jest zapobieganie gnome-keyring-manager
uruchamianiu się, co było dziwnie trudne, gdy ostatecznie osiągnięto to poprzez usunięcie uprawnień do wykonywania pliku programu.
Ryan Lue dodaje w komentarzach kolejny interesujący przypadek narożny :
W przypadku, gdy pomaga nikomu: Próbowałem nawet usunięciem id_rsa
i id_rsa.pub
pliki całkowicie, a klucz był nadal wyświetlane.
Okazało się, że gpg-agent
buforował je w ~/.gnupg/sshcontrol
pliku ; Musiałem je stamtąd ręcznie usunąć.
Ma to miejsce wówczas, gdy został dodany jak tu .keygrip
ssh-add -d
?