Okno dialogowe hasła pojawia się, gdy uprawnienia klucza prywatnego SSH są ustawione na 0600

71

Zainstalowałem mój prywatny klucz SSH ~/.ssh/id_rsai ustawiłem jego uprawnienia na 0600. Kiedy łączę się z serwerem SSH, który używa mojego klucza prywatnego w Terminal.app za pośrednictwem ssh, pojawia się okno dialogowe i prosi mnie o podanie hasła dostępu do id_rsapliku:

wprowadź opis zdjęcia tutaj

Widzę to samo okno dialogowe, gdy łączę się z serwerem FTP za pomocą klienta GUI Interarchy.

Aktualizacja: To okno dialogowe pojawia się za każdym razem, gdy się łączę, niezależnie od tego, czy zaznaczam „Zapamiętaj hasło w moim pęku kluczy”. Pojawia się jeszcze dwa razy po kliknięciu przycisku OK, bez względu na to, co wpisano w polu hasła.

Kiedy rozluźniam te uprawnienia, powiedzmy, 0640nie widzę już okna dialogowego z pytaniem o moje hasło, ale sshprzerywa się z następującym błędem:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ OSTRZEŻENIE: NIEBEZPIECZNY PRYWATNY KLUCZOWY PLIK! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
Uprawnienia 0640 dla „/Users/myusername/.ssh/id_rsa” są zbyt otwarte.
Zaleca się, aby pliki kluczy prywatnych NIE były dostępne dla innych.
Ten klucz prywatny zostanie zignorowany.
złe uprawnienia: zignoruj ​​klucz: /Users/myusername/.ssh/id_rsa

Uważam, że okno dialogowe hasła jest bardzo denerwujące i jestem pewien, że musi istnieć jakiś sposób, aby uniknąć konieczności zamknięcia tego okna dialogowego SSH potrzebuje dostępu do id_rsapliku.

Uwaga: korzystam z systemu Mac OS X 10.6.8.

titaniumdecoy
źródło

Odpowiedzi:

70

Upewnij się, że masz odpowiedni id_rsa.publub id_dsa.pubw swoim ~/.sshkatalogu.

Kiedy miałem, id_rsaale nie odpowiadający id_rsa.pub, Mac OS X ciągle pojawiał się w oknie dialogowym i pamiętam, że passowrd w moim pęku kluczy nic nie zrobił.

cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub

wygenerowałem dla mnie odpowiedni plik klucza publicznego.

Jeśli masz już swój plik publiczny (zmień jego nazwę na inną nazwę) i ponownie wygeneruj klucz publiczny za pomocą powyższego polecenia, zauważysz, że wygenerowany i stary plik nie są sobie równe. Jakoś starsze wersje Mac OS X wygenerowały klucz publiczny, którego Lion już nie lubi, a wygenerowanie go ponownie to naprawia.

Dla ciekawskich klucz jest dokładnie taki sam, zmienia się tylko to, że po kluczu w pliku nie ma już sekcji „komentarze”.

Constantine Sapuntzakis
źródło
2
To rozwiązanie może na pierwszy rzut oka nie mieć większego sensu, ale spróbuj. Miałem dokładnie ten sam problem i to rozwiązało. I zawsze używać hasła na moich kluczy SSH i powinieneś też.
Alex Recarey,
3
To rozwiązanie działało dla mnie. To nie ma sensu, ale działa! (OS X Lion)
bruno077
2
Wow, to nie ma żadnego sensu, ale z pewnością poprawiło wiele dziwnych zachowań w moim systemie. Dzięki.
Warren Pena
2
Przez całe życie nie byłem w stanie znaleźć rozwiązania tego samego problemu przez kilka dni i to mnie rozwiązało. To w ogóle nie ma sensu, ale naprawiło mój problem! Dziękuję, głosowałem.
Danny Englander
OMG dzięki! Działa dla mnie (lew górski i przy użyciu SourceTree) te dialogi były bardzo denerwujące.
Sebastian Sastre,
91

Najpierw uruchom ssh-add -Ki sprawdź, czy to rozwiąże problem.

Jeśli nie:

  • Usunięto plik rsa_id.pub i ponownie wygenerowano nowy (musi znajdować się w ~ / .ssh /):

    ssh-keygen -y -f id_rsa > id_rsa.pub
  • Upewnij się, że uprawnienia zostały ustawione na 600 zarówno dla id_rsa, jak i id_rsa.pub (musi znajdować się w ~ / .ssh /):

    chmod 600 id_rsa*
  • Wykonano następujące polecenie:

    ssh-add -K

Po wykonaniu tej czynności nie byłem już proszony o podanie hasła do mojego klucza prywatnego. Wydaje się, że faktycznie umieszcza hasło klucza prywatnego we właściwej lokalizacji pęku kluczy, z której może korzystać OS X.

Trzcina
źródło
7
GOING INSANE, dopóki nie natknąłem się na twoje polecenie „ssh-add -K”. Nie wierzę, jak skomplikowany system OSX zrobił. +1000
eduncan911
4
fwiw, musiałem chmod 600(zamiast 644), aby to zadziałało
kangax
1
Klucz prywatny z 644 nie jest bueno
xtian
15
ssh-add -Krozwiązałem mój problem
Spechal
2
Nie jest to poprawne, dopóki chmod 644 nie zostanie poprawiony na chmod 600, jest to niebezpieczne.
Tomáš Kafka,
20

W moim przypadku ssh-add -Knie załatwiłem sprawy, musiałem określić klucz:

ssh-add ~/.ssh/id_rsa
nathancahill
źródło
nie ma -Kjuż żadnej opcji. Twoje rozwiązanie to naprawiło. Zastanawiam się, dlaczego musiałem to zrobić. Nigdy nie otrzymałem żadnych monitów o podanie hasła.
DannyRe,
Dzięki! To wtedy OS X Sierra w końcu poprosił o moje hasło id_rsa.
Tomáš Kafka,
2
FWIW, -Kflaga zadziałała dla mnie w Sierra 10.12.2
Chris Wagner
Tak. Mogę potwierdzić. -K istnieje i naprawia problem w najnowszej Sierra! Dobra robota @nathancahill.
Matt Komarnicki
17

W systemie macOS 10.12 Sierra ssh-add -Kmusi być uruchamiana po każdym ponownym uruchomieniu. Aby tego uniknąć, utwórz ~/.ssh/configprzy użyciu tej zawartości.

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

Firma Apple dodała notę techniczną 2449, która wyjaśnia, co się stało.

Przed systemem macOS Sierra ssh wyświetlał okno dialogowe z prośbą o podanie hasła i oferował opcję zapisania go w pęku kluczy. Ten interfejs użytkownika został wycofany jakiś czas temu i został usunięty.

Edycja: Najwyraźniej określenie hosta i klucza nie jest konieczne. Wystarczy dodać to.

AddKeysToAgent yes
UseKeychain yes
orkoden
źródło
To działało dla mnie. Na początku próbowałem ssh-add -K, ale zmiana działała tylko do momentu ponownego uruchomienia.
Gandalf458
Musiałem postawić AddKeysToAgentna najwyższym poziomie ~/.ssh/config.
Radon Rosborough,
12

Musisz gdzieś wpisać hasło klucza prywatnego, a OS X domyślnie używa ssh-agent.

Jeśli chcesz użyć ssh-agent, ale chcesz uniknąć okna dialogowego GUI, możesz użyć ssh-add, aby dodać hasło do agenta, a następnie ssh jak zwykle.

Jeśli nie chcesz używać agenta ssh i zamiast tego wyświetlasz monit ssh o hasło, odznacz zmienną środowiskową SSH_AUTH_SOCK.

zzz
źródło
Dzięki, Alrescha. Czy wiesz, czy istnieje sposób na trwałe przechowywanie hasła klucza prywatnego w pęku kluczy systemu Mac OS X (nie tylko na jedną sesję)?
titaniumdecoy
3
Możesz spróbować „ssh-add -K” w Terminalu, ale jeśli występuje błąd, w którym zaznaczenie pola nie działa, to również może nie działać. Nie chcę, aby moje hasła ssh były przechowywane w pęku kluczy, więc tego nie testowałem.
zzz
Dzięki ssh-add -Knie muszę wprowadzać hasła, aby się połączyć, ale nadal pojawia się monit; Po prostu to odrzucam.
titaniumdecoy
3
ssh-add -K to to, czego używasz, aby dodać hasło do pęku kluczy. Jeśli nie podasz hasła, nie będzie można go umieścić w pęku kluczy.
zzz
1
addendum: Jeśli zarówno Lion, jak i Snow Leopard wprowadzę ssh-add -K, w Terminalu pojawi się monit - nie okno dialogowe.
zzz
8

Po rozluźnieniu uprawnień klucz jest ignorowany. Dzięki temu nic nie zyskasz.

Jeśli chcesz użyć klucza bez konieczności każdorazowego wprowadzania hasła, masz dwie opcje.

Jeśli zaznaczysz „Zapamiętaj hasło w moim pęku kluczy”, nie będziesz musiał za każdym razem wpisywać hasła: będzie ono przechowywane w pęku kluczy razem ze wszystkimi innymi hasłami. To jest zalecana opcja.

Możesz utworzyć plik klucza prywatnego bez hasła. Możesz zmienić istniejący plik klucza prywatnego, aby nie był chroniony hasłem (zmiana hasła dotyczy tylko pliku klucza, a nie samego klucza). W wierszu polecenia uruchom ssh -p, wprowadź istniejące hasło, a następnie pozostaw nowe hasło puste. Posiadanie pustego hasła jest zagrożeniem bezpieczeństwa: każdy, kto może uzyskać dostęp do pliku klucza prywatnego (na przykład uzyskując dostęp do kopii zapasowych), może go natychmiast użyć.

Gilles
źródło
Dzięki za odpowiedź, chociaż o jednej rzeczy zapomniałem wspomnieć - zaznaczenie opcji „Zapamiętaj hasło w moim pęku kluczy” nie przynosi żadnego efektu: okno dialogowe pojawia się ponownie przy następnym połączeniu. (Użycie pustego hasła nie jest dla mnie opcją.)
titaniumdecoy
3
Sugerowanie zastąpienia klucza chronionego hasłem kluczem bez hasła to naprawdę okropny pomysł ...
Schmurfy,
5

jeśli dodałeś swój klucz prywatny do źródłowego katalogu ~ / .ssh i podałeś ssh-add -K, aby dodać go do pęku kluczy, a zawartość klucza publicznego została skopiowana do .ssh / author_keys (dla poprawności konto) na serwerze docelowym okno dialogowe zniknie.

to skomplikowana kombinacja plików, uprawnień, lokalizacji i poleceń, więc może to zająć trochę czasu. nie spieszyłbym się z wnioskiem na temat błędów.

David Griffis
źródło
3

Mam dokładnie ten sam problem na Lionie (Mac OS X 10.7). Myślę, że to błąd ... Jeśli uwierzytelnianie ssh jest hasłem, klient najpierw przechodzi przez klucz publiczny, co jest normalne. Jednak nawet jeśli zdecydujesz się zapisać hasło na pęku kluczy (co nie jest wymagane do uwierzytelnienia hasła) następnym razem, gdy zostanie ustanowione nowe połączenie ssh, zostaniesz ponownie zapytany o hasło ...

Stefan
źródło
1
Uważam to również za błąd, wszystko działało dobrze z lampartem śnieżnym, ale za każdym razem, gdy mój komputer wraca ze snu, hasło klucza ssh jest pytane ponownie, chociaż zaznaczyłem „pamiętaj to” przy ostatnim zapytaniu! Bardzo denerwujące ...
Schmurfy,
3

Nie powinno być potrzeby ponownego generowania kluczy publicznych. Możesz po prostu wykonać te dwa polecenia:

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

Zasadniczo musisz zaostrzyć uprawnienia do pliku klucza publicznego i dodać swój klucz do agenta uwierzytelniania OSX.

rubel
źródło
3

W najnowszej wersji systemu macOS (10.12.2 - Sierra) jest to łatwa poprawka. Po prostu edytuj ~ / .ssh / config i włącz opcję UseKeychain:

Host *
UseKeychain yes

Zapisz i rozwiązany.

Ricardo Mendes
źródło
2

Ten problem wystąpił w moim systemie OS X 10.7.4, gdy zmarł ssh-agent. Ponowne uruchomienie naprawiło problem. (Możesz spróbować zrestartować ssh-agent, ale nie wiem, czy pęku kluczy jest wystarczająco sprytny, aby podnieść nowe gniazdo ssh-agent).

Troy J. Farrell
źródło
To właśnie naprawił mój problem po około godzinnym marszu.
DannyRe,
2
  1. Upewnij się, że ~ / .ssh / to chmod 700.

  2. Upewnij się, że oba pliki ~ / .ssh / id * są chmod 600.

  3. Uruchom / Aplikacje / Narzędzia / Keychain Access.app i napraw brelok.

  4. Wyloguj. (Ponowne uruchomienie nie byłoby strasznym pomysłem)

  5. Zaloguj sie

  6. Jeśli problem będzie się powtarzał, przenieś istniejące pliki ~ / .ssh / id * na pulpit i spróbuj wygenerować nowe klucze za pomocą ssh-keygen -t dsa -f ~/.ssh/id_dsa -C [email protected]i sprawdź, czy nowe klucze działają lepiej.

Jestem na Lionie, ale IIRC Snow Leopard działał w ten sam sposób.

ps - każdy, kto sugeruje użycie pustego hasła ssh, powinien być zmuszony do noszenia znaku, aby inni wiedzieli, że nie powinni od nich korzystać.

TJ Luoma
źródło
1

Ponowne wygenerowanie klucza publicznego nie działa dla mnie (10.8), podobnie jak generowanie nowego klucza SSH. Jeśli na przykład uruchomię git pull po zablokowaniu pęku kluczy logowania, pojawi się okno dialogowe z żądaniem hasła do klucza zamiast pierwszej próby odzyskania hasła z pęku kluczy logowania.

Jeśli jednak najpierw zabiję agenta ssh, zostanie wyświetlony monit o hasło pęku kluczy logowania, które następnie pobierze hasło klucza SSH.

szalik
źródło
Cześć, to wygląda na osobne pytanie, a nie odpowiedź na to pytanie. Czy możesz przesłać ponownie jako nowe pytanie?
Szkot
1

Innym interesującym odkryciem jest to, że jeśli skopiujesz i wkleisz zawartość pliku PEM, możesz nie mieć kreski w końcówce. Pamiętaj więc, aby dodać ostatnią linię jako,

-----END RSA PRIVATE KEY-----
Kieł
źródło
Coś podobnego jest takie, że po wklejeniu klucza ssh z czegoś takiego jak lastpass wkleja wszystko w jednym wierszu. Wydawało mi się to problemem i po podzieleniu klucza prywatnego na białe znaki z powrotem na właściwy format, zadziałało.
Cameron Gagnon,
1

Musiałem wykonać następujące kroki, aby to zadziałało.

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub git@github.com

Ostateczne polecenie powinno następnie wypisać coś takiego: Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.

sieć mózgu
źródło
0

Miałem ten sam problem. Wydaje mi się, że to naprawiłem.

1) Utworzono kopię zapasową, zmieniając nazwę na stare pliki id_dsa i id_dsa.pub.

2) Uruchomił nowy keygen z pustym hasłem.

Współpracuje z zadaniem okresu uruchamiania monitorowania zdalnego serwera, a także logowania się z ssh w terminalu.

Mam szybką funkcję authme w moim terminalu, ponieważ mam następujące w moim .bash_profile

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

Tak więc szybki authme remoteserver.com skopiuje nowy klucz zdalny.

Myślę, że błąd ma związek z tym, że hasło nie zostało przekonwertowane (mój stary Snow Leopard w ogóle go nie miał).

Spróbuj i sprawdź, czy to pomoże.

Nie zajęło to więcej niż 10 minut. Zawsze spędzałem googlowanie, aby sprawdzić, czy są jakieś inne wzmianki na ten temat. Ta strona była jedyna!

Owain.

użytkownik9563
źródło
Niestety użycie pustego hasła nie jest dla mnie opcją
titaniumdecoy
0

Miałem podobny problem. Okazało się, że klucz prywatny, którego używałem, był w niewłaściwym formacie. Użyłem PuTTY Key Generator na moim komputerze Win i ssh w OS X oczekuje innego formatu - formatu Open SSH.

Okazało się, że narzędzie, którego użyłem do wygenerowania tego klucza (PuTTY Key Generator) miało opcję konwersji mojego klucza prywatnego na format wymagany przez Open SSH.

Proste jak:

  1. Otwórz PuTTY Key Gen
  2. Załaduj swój klucz prywatny
  3. Wybierz Konwersje> Eksportuj klucz OpenSSH.

Zapisany plik zawiera oryginalny klucz prywatny w odpowiednim formacie (OpenSSH).

Greg
źródło
0

Proszę upewnij się że:

  1. Używasz formatu pem jako klucza prywatnego. Wynika to z faktu, że Mac używa klienta openssh, który współpracuje z pem. ppk jest zastrzeżonym formatem putty i nie jest kompatybilny z openssh. Możesz łatwo przekonwertować ppk na pem za pomocą putty keygen, w przypadku gdy masz tylko ppk.
  2. Uprawnienia do pliku pem to 600. Klucze prywatne mają być dostępne tylko dla ich właściciela. Tak więc, jeśli uprawnienia dają dostęp do odczytu komukolwiek innemu, będzie to uważane za zagrożenie dla bezpieczeństwa.

Mam nadzieję, że powinno to rozwiązać problem.

Sasidhar Sekar
źródło
-1

Użyj klucza .pem zamiast klucza .ppk.

Abhi
źródło
1
Szukamy długich odpowiedzi, które zawierają wyjaśnienia i kontekst. Nie udzielaj odpowiedzi w jednym wierszu; wyjaśnij, dlaczego Twoja odpowiedź jest poprawna, najlepiej z cytatami. Odpowiedzi, które nie zawierają wyjaśnień, mogą zostać usunięte.
Tetsujin,