macOS 10.12 Sierra nie zapomni mojego hasła pliku kluczy ssh

25

Po utworzeniu nowego zaszyfrowanego id-rsapliku klucza ssh-keygeni użyciu go po raz pierwszy nie mogę zmusić systemu macOS do zapomnienia hasła. Jest to podobne do tego, jak sprawić, by OS X nie zapamiętywał hasła hasła ssh, ale gorzej.

Próbowałem zrestartować komputer, zabić ssh-agent, zablokować wszystkie breloki, ale nadal wydaje się, że gdzieś są przechowywane. Nie mogę go jednak znaleźć w żadnym pęku kluczy. To wydaje się bardzo niepewne. Odpowiedzi na hasło klucza prywatnego SSH, którego nigdy nie usunięto za pomocą Keychain / ssh-agent, również nie pomaga.

W rzeczywistości okno dialogowe, które kiedyś się wyświetlało, pyta, czy chcesz zapisać hasło, czy już nie istnieje.

hogliux
źródło
Czy sprawdziłeś, czy w ogóle jest zaszyfrowany?
John Keates
Tak. Jest prawie pewne, że ssh pyta o hasło przy pierwszym użyciu. Czy ktoś może to faktycznie odtworzyć?
hogliux
Cóż, działa to w ten sam sposób z moją instalacją, jest to sposób, w jaki skonfigurowano ssh / ssh-agent.
John Keates
To prawda, jeśli klikniesz pole wyboru, aby powiedzieć systemowi macOS, aby zapisał hasło w pęku kluczy. Jeśli jednak nie klikniesz tego pola wyboru, system macOS powinien zawsze pytać o hasło. Ale nawet jeśli kliknąłeś go, zawsze byłeś w stanie usunąć go ponownie w narzędziu pęku kluczy. Od czasu Sierra okno dialogowe już się nie pojawia i w narzędziu pęku kluczy nie ma wpisu.
hogliux
To okno dialogowe, o którym mówię, i które wydaje się już nie istnieć: dribin.org/dave/resources/pictures/ssh_leopard_dialog.png
hogliux

Odpowiedzi:

27

Aby wyłączyć zapisywanie hasła w pęku kluczy, należy dodać następujące wiersze do pliku ~ / .ssh / config :

Host *
UseKeyChain no

Jeśli masz już hasło w pęku kluczy, możesz je usunąć za pomocą poleceń:

cd ~/Library/Keychains/<UUID>/
sqlite3 keychain-2.db 'delete from genp where agrp="com.apple.ssh.passphrases"'

Jeśli chcesz mieć zachowanie takie jak w OS X El Capitan lub wcześniejszym (tj. Hasło przechowywane do wylogowania lub ponownego uruchomienia), po prostu dodaj do ~ / .ssh / config:

AddKeysToAgent yes

Nie musisz uruchamiać ssh-agent.

Mbamac
źródło
1
Ta odpowiedź na stałe rozwiązuje problem! Tak więc oznaczyłem to jako poprawną odpowiedź. Dziękuję Ci!
hogliux
sugerowana edycja: zmień Library/Keychains/<UUID>/na ~/Library/Keychains/<UUID>/dla jasności :)
Mohamed Hafez
proponowana edycja zaakceptowana :)
mbamac,
20

Dzięki Clive lepiej rozumiem tę nową „funkcję”. Po wpisaniu hasła Sierra dodaje je do pęku kluczy, ale nie do agenta ssh. Jeśli twoja tożsamość nie jest w ssh-agent, nie ma możliwości zarządzania nią ssh-add. Aby zarządzać (tj. Usuwać) swoją tożsamością z pęku kluczy, musisz dodać swoją tożsamość ssh-agentza pomocą ssh-add. Po dodaniu tożsamości ssh-agentmożesz użyć jej ssh-add -K -ddo usunięcia jej zarówno z ssh-agentpęku kluczy, jak i pęku kluczy. Jeśli chcesz, aby twoja tożsamość była dodawana do ssh-agent za każdym razem, gdy używasz ssh dodaj:

AddKeysToAgent yes

do twojego .ssh/config. Zapewni to, że ssh-agentzawsze ma swoją tożsamość.

Gene Frenkler
źródło
Tylko kontynuacja. Jeśli dodasz „UseKeyChain no” do swojego .ssh / config, powstrzyma Keychain przed dodaniem hasła. Chcesz zachować „AddKeysToAgent yes” w ssh-agent zachowa twoje hasło do momentu ponownego uruchomienia lub użycia ssh-add -d.
Gene Frenkler,
Uwaga: wymaga to użycia OpenSSH dostarczonego przez Apple. Ta łatka nie wchodzi w skład domowego naparuhomebrew/dupes/openssh: stable 7.3p1
Ryan Gibbons,
3
ssh-add -K -d

Może to usunąć hasła zapisane wcześniej w pęku kluczy. Od macOS 10.12 Sierra, aby ponownie uniknąć hasła przechowywanego w pęku kluczy, ssh-addnajpierw wykonaj tę czynność.

Clive Lin
źródło
Tak. To działało na poprzednich wersjach macOS Sierra. Ale już nie działa. macOS Sierra wciąż pamięta hasło.
hogliux
1
DOBRZE. Więcej dochodzeń. Raz o tym zapomina, ale po użyciu w dowolnym miejscu wróci do pęku kluczy (ssh, scp, git itp.). Jakiś nieznajomy wysłał mi e-mail bezpośrednio i stwierdził, że hasło wydaje się być przechowywane w ~ / Library / Keychains / <SOME-UUID> /keychain-2.db. Ale nawet podczas blokowania mojego pęku kluczy logowania (i wszystkich innych pęku kluczy) os x nie będzie pytał o hasło do mojego pęku kluczy podczas uzyskiwania dostępu do hasła. To naprawdę nie wydaje się właściwe.
hogliux
Rzeczywiście wydaje się, że w Sierra hasło jest zapisywane w tej lokalizacji pęku kluczy, a nie w zwykłym pęku kluczy logowania.
m1keil