2016-09-22 09:21:53 +0000 2016-09-22 09:21:53 +0000
607
607

macOS wciąż pyta o moje hasło ssh od czasu aktualizacji do Sierry

Kiedyś pamiętał hasło, ale teraz pyta mnie o nie za każdym razem.

Przeczytałem, że muszę zregenerować klucz publiczny za pomocą tej komendy, co też zrobiłem:

ssh-keygen -y -f id_rsa > id_rsa.pub

ale to nic nie naprawiło.

Jak mogę sprawić, żeby macOS znów pamiętał moje hasło?

Odpowiedzi (12)

1168
1168
1168
2016-12-19 12:04:25 +0000

W najnowszej wersji macOS (10.12.2) jest to łatwe do naprawienia. Wystarczy edytować swoje ~/.ssh/config i włączyć opcję UseKeychain:

Host *
    UseKeychain yes

Nie trzeba nic więcej zmieniać. Teraz wszystko działa tak, jak działało przed ostatnimi aktualizacjami. Nie ma potrzeby dodawania kluczy do opcji ssh-agent.


Edit: Nadal może być konieczne jednokrotne wpisanie hasła. Jeśli go nie znasz, postępuj zgodnie z tymi instrukcjami , aby je ujawnić.

193
193
193
2016-09-23 12:53:05 +0000

Miałem ten sam problem. MacOS Sierra keychain wciąż prosi o hasło. Twój idrsa powinien być zaszyfrowany frazą hasła dla bezpieczeństwa. Następnie spróbuj dodać go do keychain `ssh-add -K ~/.ssh/idrsa`

Jeśli twój klucz znajduje się w innym folderze niż ~/.ssh, to zastąp go właściwym folderem.

Keychain zna teraz twój klucz ssh i, miejmy nadzieję, wszystko działa (u mnie tak było)

75
75
75
2016-10-09 14:39:56 +0000

To naprawiło mój podobny problem:

/usr/bin/ssh-add -K

To przechowuje hasła w twoim keychainie.

Uaktualnienie (dzięki @EasyCo): To działa, ale nie utrzymuje się między ponownymi uruchomieniami. Rozwiązanie @jukka-suomela na tej stronie does work across restarts. Możesz znaleźć tę odpowiedź tutaj: https://superuser.com/a/1158050/234685

41
41
41
2016-10-29 17:16:24 +0000

Musiałem tylko raz wpisać poprawne hasło i wszystko zaczęło działać. Problem polegał na tym, że nie pamiętałem mojego oryginalnego hasła SSH, ale odzyskałem je wykonując te kroki z Githuba:

  • W Finderze, wyszukaj aplikację Keychain Access.
  • W Keychain Access, wyszukaj SSH.
  • Podwójne kliknięcie na wpis klucza SSH otworzy nowe okno dialogowe.
  • Okno dialogowe dostępu do Keychain W lewym dolnym rogu wybierz Pokaż hasło.
  • Zostaniesz poproszony o podanie hasła administracyjnego. Wpisz je w oknie dialogowym “Keychain Access”.
  • Twoje hasło zostanie ujawnione.
19
19
19
2016-09-27 14:40:37 +0000

Żadne z powyższych rozwiązań nie zadziałało po zainstalowaniu Sierry zamiast El Capitana na nowym MacBooku Pro. Sierra z założenia nie zapisuje kluczy SSH w keychainie.

Dwa rozwiązania zadziałały dla mnie. Jednym z nich jest dodanie polecenia ssh-add -A &> /dev/null do ~/.bash_profile. Za każdym razem, gdy otworzysz terminal, ta komenda zostanie wykonana (część &> /dev/null wysyła wyjście komendy do pliku /dev/null).

Bardziej skomplikowanym, ale nieco zgrabniejszym rozwiązaniem jest utworzenie plistu z poleceniem, które jest wykonywane przy każdym uruchomieniu systemu operacyjnego, jak zasugerowano w Zapisywanie kluczy SSH w macOS Sierra keychain . Wymaga to użycia Xcode do utworzenia pliku.

18
18
18
2016-12-16 06:14:08 +0000

Jednym z rozwiązań jest dodanie poniższego do pliku ~/.ssh/config:

Host *
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa
   UseKeychain yes

Taken from: https://www.reddit.com/r/osx/comments/52zn5r/difficulties Also see: https://apple.stackexchange.com/a/264974/3810

8
8
8
2016-09-22 10:58:21 +0000

Dziś rano miałem ten sam problem co Ty po aktualizacji do Sierry. W moim przypadku plik id_rsa był zaszyfrowany, a po odszyfrowaniu działał jak zaczarowany.

  1. Sprawdź, czy twój plik id_rsa jest zaszyfrowany za pomocą następującego polecenia: cat ~/.ssh/id_rsa | head -2
  2. Jeśli w drugiej linii pojawi się Proc-Type: 4,ENCRYPTED, oznacza to, że plik jest zaszyfrowany i możesz spróbować go odszyfrować
  3. Ważne: zrób kopię zapasową swojego oryginalnego pliku id_rsa! Użyj polecenia cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Odszyfruj swój klucz prywatny za pomocą openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Usuń oryginalny klucz (rm ~/.ssh/id_rsa) i zastąp go odszyfrowanym: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Po tych krokach powinieneś być w stanie ponownie używać ssh.

8
8
8
2017-02-15 02:15:22 +0000

Próbowałem wielu odpowiedzi tutaj, ale wciąż miałem problemy ze zdalnym przekazywaniem kluczy (takich jak podczas korzystania z capistrano). Aby to rozwiązać, przeczytałem technote od jabłka i zrobiłem to mój plik konfiguracyjny. Koniec z pytaniem o moje hasło! https://developer.apple.com/library/content/technotes/tn2449/\index.html

Host *  
IdentityFile ~/.ssh/id_rsa  
IgnoreUnknown UseKeychain  
UseKeychain yes  
AddKeysToAgent yes
5
5
5
2017-01-02 00:05:33 +0000

Miałem ten problem również podczas próby wdrożenia jakiegoś kodu za pomocą Capistrano . Bardzo frustrujące. Oto dwie metody, które znam, aby poradzić sobie z tym problemem.

Metoda 1: Dodaj wszystkie znane klucze do agenta SSH.

Rozwiązaniem, które znalazłem, jest uruchomienie ssh-add z opcją -A - co doda wszystkie znane tożsamości do agenta SSH, używając dowolnych haseł przechowywanych w keychainie, jak poniżej:

ssh-add -A

Teraz to działa, ale nie będzie utrzymywać się podczas restartów. Więc jeśli chcesz już nigdy więcej się o to nie martwić, po prostu otwórz plik ~/.bash_profile swojego użytkownika w następujący sposób:

nano ~/.bash_profile

I dodaj tę linię na dole:

ssh-add -A 2>/dev/null;

Teraz, gdy otworzysz nowe okno Terminala, wszystko powinno być dobrze!

Metoda 2: Dodaj tylko klucze SSH, które są w keychain do agenta.

Więc podczas gdy opcja ssh-add -A powinna działać dla większości podstawowych przypadków, natknąłem się ostatnio na problem, w którym miałem 6-7 skrzynek Vagrant (które używają kluczy/tożsamości SSH do dostępu) skonfigurowanych na maszynie na górze bardziej powszechnego id_rsa.pub w miejscu.

Krótka historia, skończyło się na tym, że zostałem zablokowany na zdalnym serwerze z powodu zbyt wielu nieudanych prób opartych na kluczach / tożsamościach SSH, ponieważ dostęp do serwera był oparty na haśle, a klucze / tożsamości SSH są kluczami / tożsamościami SSH. Więc agent SSH wypróbował wszystkie moje klucze SSH, nie udało się i nie mogłem nawet dostać się do monitu o hasło.

Problem polega na tym, że ssh-add -A po prostu arbitralnie doda każdy klucz/tożsamość SSH, który masz do agenta, nawet jeśli nie jest to konieczne; tak jak w przypadku skrzynek Vagrant.

Moje rozwiązanie po wielu testach było następujące.

Po pierwsze, jeśli masz więcej kluczy/tożsamości SSH dodanych do agenta niż potrzebujesz - jak pokazano na przykładzie ssh-add -l , to usuń je wszystkie z agenta w następujący sposób:

ssh-add -D

Mając to zrobione, następnie uruchom agenta SSH jako proces w tle tak:

eval "$(ssh-agent -s)"

Teraz robi się dziwnie i nie jestem zbyt pewny dlaczego. W niektórych przypadkach możesz specjalnie dodać klucz/identyfikator ~/.ssh/id_rsa.pub do agenta w ten sposób:

ssh-add ~/.ssh/id_rsa.pub

Wpisz swoje passphrase, naciśnij Return i powinieneś być dobry do pracy.

W innych przypadkach wystarczy uruchomić to, aby klucz/identyfikator został dodany:

ssh-add -K

Jeśli to wszystko zadziałało, wpisz ssh-add -l i powinieneś zobaczyć jeden samotny klucz/identyfikator SSH na liście.

Wszystko w porządku? Teraz otwórz swój klucz .bash_profile:

nano ~/.bash_profile

I dodaj tę linię na dole; skomentuj lub usuń wersję -A, jeśli masz ją na miejscu:

ssh-add -K 2>/dev/null;

Pozwoli to na ponowne załadowanie klucza/tożsamości SSH do agenta SSH przy każdym uruchomieniu/restarcie systemu.

UPDATE: Apple dodał teraz opcję UseKeychain do otwartych opcji konfiguracyjnych SSH i uważa, że ssh-add -A jest również rozwiązaniem.

Od macOS Sierra 10.12.2, Apple (zakładam) dodał opcję konfiguracyjną UseKeychain dla konfiguracji SSH. Sprawdzanie strony man (poprzez man ssh_config) pokazuje następujące informacje:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct. The
        argument must be ``yes'' or ``no''. The default is ``no''.

Co sprowadza się do tego, że Apple widzi rozwiązanie jako albo dodanie ssh-add -A do twojego .bash_profile jak wyjaśniono w tym bilecie Open Radar lub dodanie UseKeychain jako jednej z opcji w per user ~/.ssh/config.

4
4
4
2017-01-28 08:58:48 +0000

Odpowiedź Jukki Suomeli ](https://superuser.com/users/43242/jukka-suomela) jest poprawna, ale jeśli używasz openssh zainstalowanego z homebrew, to musisz go również odinstalować za pomocą:

brew remove openssh

…aby przełączyć się z powrotem na domyślnego systemowego openssh, ponieważ ten z homebrew nie obsługuje wpisu w konfiguracji ssh UseKeychain.

2
2
2
2016-12-10 21:04:01 +0000

Potrzebujesz pliku .plist dodanego do ~/Library/LaunchAgents/, aby uruchamiać ssh-add -A przy każdym starcie macOS.

Jest jedno polecenie, które to robi (z SSH-keys-in-macOS-Sierra-keychain ), które brzmi:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
2
2
2
2017-01-01 23:56:10 +0000

Wypróbowałem wszystkie rozwiązania sugerowane tutaj, ale nie mam keychain skonfigurowanego w moim Macu.

Dodanie do następującej linii na górze pliku .ssh/config zarówno na lokalnym jak i zdalnym komputerze zadziałało dla mnie.

PubkeyAcceptedKeyTypes=+ssh-dss