Se pare că ssh-add -K ~/.ssh/id_rsa
vă va încărca cheia, dar vă va cere parola de fiecare dată când reporniți.
Caut o soluție care să nu mă oblige să reintroduc parola cheii între conectări.
Comentarii
Răspuns
Pe OSX , clientul nativ ssh-add
are un argument special pentru a salva fraza de acces a cheii private în brelocul OSX, ceea ce înseamnă că autentificarea dvs. normală îl va debloca pentru a fi utilizat cu ssh. Pe OSX Sierra și mai târziu, trebuie să configurați SSH pentru a utiliza întotdeauna brelocul (a se vedea pasul 2 de mai jos).
Alternativ puteți utiliza o cheie fără o expresie de acces, dar dacă preferați securitatea care este cu siguranță acceptabilă cu acest flux de lucru.
Pasul 1 – Stocați cheia în breloc
Faceți acest lucru o singură dată:
ssh-add -K ~/.ssh/[your-private-key]
Introduceți fraza de acces cheie și nu veți fi solicitat din nou.
(Dacă sunteți pe o versiune OSX pre-Sierra, ați terminat, pasul 2 nu este necesar.)
Pasul 2 – Configurați SSH pentru a utiliza întotdeauna brelocul
Se pare că OSX Sierra a eliminat comportamentul convenabil de a păstra cheile dvs. între conectări și actualizarea la ssh nu mai folosește brelocul în mod implicit. Din această cauză, vi se va solicita să introduceți fraza de acces pentru o cheie după ce faceți upgrade și din nou după fiecare repornire.
Soluția este destul de simplă și este prezentată în acest comentariu despre firul github . Iată cum îl configurați:
-
Asigurați-vă că ați finalizat pasul 1 de mai sus pentru a stoca cheia în breloc.
-
Dacă nu aveți deja, creați un fișier
~/.ssh/config
. Cu alte cuvinte, în directorul.ssh
din directorul de acasă, faceți un fișier numitconfig
. -
În acel fișier
.ssh/config
, adăugați următoarele rânduri :Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
Schimbați
~/.ssh/id_rsa
cu numele de fișier real al cheii dvs. private. Dacă aveți alte chei private în~/.ssh
, adăugați și o linieIdentityFile
pentru fiecare dintre ele. De exemplu, am o linie suplimentară care citeșteIdentityFile ~/.ssh/id_ed25519
pentru a 2-a cheie privată.UseKeychain yes
este partea cheie, care îi spune SSH să caute cheia OSX în cheie. expresie de acces. -
Asta e! Data viitoare când încărcați orice conexiune ssh, va încerca cheile private pe care le-ați specificat și va căuta expresia de acces în brelocul OSX. Nu este necesară tastarea expresiei de acces.
Comentarii
- @Poulsbo & @Abram – vezi actualizarea mea, Sierra a schimbat comportamentul automat și acum trebuie să rulezi
ssh-add -A
manual pentru a încărca brelocul salvat. Unele soluții posibile menționate mai sus. - @trisweb Vă mulțumim pentru sfat. joshbuchea ' de modificare a fișierului
.ssh/config
pare promițătoare! Consultați github.com/lionheart/openradar-mirror/issues/… - Funcționează excelent!În cazul meu, trebuia să folosesc steagul
A
în plus față de celK
pentru a adăuga cheile mele la breloc și a înregistra fraza de acces în it (ssh-add -AK ~/.ssh/[your-private-key]
). Mulțumesc! - Chiar și cu opțiunea usekeychain, totuși constat că brelocul meu va renunța la repornirea cheii .ssh / id_rsa.
- Am făcut exact același lucru și Mac-ul meu renunță la cheie la repornire.
Răspuns
Am avut o problemă similară, în sensul că eram întrebat de fiecare dată pentru fraza de acces pentru cheia de pub. După sugestia utilizatorului „trisweb” de mai sus, am activat aceste opțiuni la ~/.ssh/config
:
Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
Dar încă mi-a cerut de fiecare dată când am vrut să folosesc ssh. În cele din urmă, am activat ssh -v
și am găsit această linie de depanare:
debug1: key_load_private: incorrect passphrase supplied to decrypt private key
Mi-am deschis brelocul în „Acces la breloc .app „, a găsit cheia numită” SSH: /Users/username/.ssh/id_rsa „și a deschis-o. Am dat clic pe „Afișează parola” pentru a dezvălui parola și am constatat într-adevăr că expresia de acces din brelocul de chei era o expresie de acces veche. Am actualizat expresia de acces în Keychain Access, iar acum funcționează fără parolă.
Aș fi putut actualiza și expresia de acces cu această expresie:
ssh-keygen -p -f ~/.ssh/id_rsa
Comentarii
- Pe Mac-ul meu parola este salvată în categoria „parolă” din lanțul „iCloud”. Am crezut că se află în lanțul „logare”.
Răspuns
La toate cele de mai sus nu au funcționat , problema mea pare să fi fost pentru că duplicam UseKeychain yes
& AddKeysToAgent yes
profiluri / comenzi rapide ale cheilor ssh. Mi-am actualizat fișierul ~/.ssh/config
pentru a le declara o singură dată și acum toate se încarcă la conectare fără a solicita parole la pornire, de exemplu:
Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/foo IdentityFile ~/.ssh/bar Host foo HostName foo.com User fooUser IdentityFile ~/.ssh/foo Host bar HostName bar.com User barUser IdentityFile ~/.ssh/bar
Comentarii
- Aș recomanda
Host *
să urmeze reguli de gazdă specifice. Consultațiman ssh_config
pentru detalii.
Răspuns
De asemenea, în macOS Sierra și HighSierra (nu știți despre versiunile anterioare), rularea ssh-add -A
va face ca agentul să încarce toate cheile ale căror expresii de acces sunt stocate pe Keychain … Deci foarte la îndemână
Răspuns
Adăugați cheia publică în:
.ssh/known_hosts
Public cheia este de obicei activată:
/home/user/.ssh/id_rsa.pub
Sper că ajută
Comentarii
- Cred că înseamnă
authorized_keys
- Oricum, acest lucru nu ' nu funcționează dacă aveți mai multe chei!
id_rsa
are o parolă.ssh-add
, ci doar să rulațissh
direct. Ar trebui să apară o fereastră care va apărea ca frază de acces pentru cheie și cu o casetă de selectare pentru a vă permite să o stocați în breloc.