Det verkar som att ssh-add -K ~/.ssh/id_rsa
laddar din nyckel men ber om lösenordet varje gång du startar om.
Jag letar efter en lösning som inte kräver att jag anger lösenordet igen mellan inloggningar.
Kommentarer
Svar
På OSX , den infödda ssh-add
-klienten har ett speciellt argument för att spara den privata nyckelns lösenfras i OSX-nyckelringen, vilket innebär att din vanliga inloggning låser upp den för användning med ssh. På OSX Sierra och senare måste du också konfigurera SSH för att alltid använda nyckelringen (se steg 2 nedan).
Alternativt kan du använda en nyckel utan lösenfras, men om du föredrar den säkerhet som verkligen är acceptabelt med detta arbetsflöde.
Steg 1 – Spara nyckeln i nyckelringen
Gör det bara en gång:
ssh-add -K ~/.ssh/[your-private-key]
Ange lösenordsfrasen så kommer du inte att bli ombedd om det igen.
(Om du använder en pre-Sierra-version av OSX är du klar, steg 2 krävs inte.)
Steg 2 – Konfigurera SSH så att den alltid använder nyckelringen
Det verkar som om OSX Sierra tog bort det praktiska beteendet att kvarhålla dina nycklar mellan inloggningar och uppdateringen till ssh använder inte längre nyckelringen som standard. På grund av detta kommer du att bli ombedd att ange lösenfrasen för en nyckel efter uppgradering och igen efter varje omstart.
Lösningen är ganska enkel och beskrivs i denna github-trådkommentar . Så här ställer du in det:
-
Se till att du har slutfört steg 1 ovan för att lagra nyckeln i nyckelringen.
-
Om du inte redan har skapat en
~/.ssh/config
-fil. Med andra ord, i.ssh
-katalogen i din hemdirektör, gör en fil som heterconfig
. -
I den
.ssh/config
-filen, lägg till följande rader :Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
Ändra
~/.ssh/id_rsa
till det faktiska filnamnet på din privata nyckel. Om du har andra privata nycklar i din~/.ssh
katalog, lägg också till enIdentityFile
rad för var och en av dem. Till exempel har jag ytterligare en rad som läserIdentityFile ~/.ssh/id_ed25519
för en andra privata nyckel.UseKeychain yes
är nyckeldelen, som ber SSH att leta efter nyckeln i din OSX-nyckelring lösenfras. -
Det är det! Nästa gång du laddar någon ssh-anslutning kommer den att pröva de privata nycklarna du har angett, och den kommer att leta efter deras lösenfras i OSX-nyckelringen. Ingen lösenfrasskrivning krävs.
Kommentarer
- @Poulsbo & @Abram – se min uppdatering, Sierra ändrade det automatiska beteendet och nu måste du köra
ssh-add -A
manuellt för att ladda din sparade nyckelring. Några möjliga lösningar som nämns ovan. - @trisweb Tack för tipset. joshbuchea ' s lösning för att ändra
.ssh/config
filen ser lovande ut! Se github.com/lionheart/openradar-mirror/issues/… - Fungerar bra!I mitt fall behövde jag använda flaggan
A
förutomK
för att lägga till mina nycklar i nyckelringen och registrera lösenfrasen i det (ssh-add -AK ~/.ssh/[your-private-key]
). Tack! - Även med alternativet usekeychain hittar jag fortfarande att min nyckelring kommer att släppa .ssh / id_rsa-tangenten vid omstart.
- Jag gjorde exakt samma sak och min Mac tappar fortfarande nyckel vid omstart.
Svar
Jag hade ett liknande problem, eftersom jag blev ombedd varje gång för min lösenfras för pubnyckel. Enligt förslag från användaren ”trisweb” ovan aktiverade jag dessa alternativ till ~/.ssh/config
:
Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
Men det frågade fortfarande varje gång jag ville använda ssh. Så småningom slog jag på ssh -v
och hittade den här felsökningsraden:
debug1: key_load_private: incorrect passphrase supplied to decrypt private key
Jag öppnade sedan min nyckelring i ”Keychain Access .app ”, hittade nyckeln med namnet” SSH: /Users/username/.ssh/id_rsa ”och öppnade den. Jag klickade på ”Visa lösenord” för att avslöja lösenordet och fann verkligen att lösenfrasen i nyckelringen var en gammal lösenfras. Jag uppdaterade lösenfrasen i Keychain Access och fungerar nu lösenordsfritt.
Jag kunde också ha uppdaterat lösenfrasen med den här frasen:
ssh-keygen -p -f ~/.ssh/id_rsa
Kommentarer
- I min Mac sparas lösenordet i kategorin ”lösenord” i kedjan ”iCloud”. Jag trodde att det var i ”logga in” -kedjan.
Svar
Till alla där ovanstående inte fungerade , mitt problem verkar bero på att jag duplicerade UseKeychain yes
& AddKeysToAgent yes
ssh-tangentprofiler / genvägar. Jag uppdaterade min ~/.ssh/config
-fil för att deklarera dessa bara en gång och de laddas nu alla vid inloggning utan att behöva lösenord vid start, t.ex.:
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
Kommentarer
- Jag rekommenderar att
Host *
följer specifika värdregler. Seman ssh_config
för detaljer.
Svar
Också i macOS Sierra och HighSierra (vet inte om tidigare versioner), kör ssh-add -A
får agenten att ladda alla nycklar vars lösenfraser är lagrade på nyckelring … Så väldigt praktiskt
Svar
Lägg till den offentliga nyckeln i:
.ssh/known_hosts
Public nyckeln är vanligtvis på:
/home/user/.ssh/id_rsa.pub
Hoppas att det hjälper
Kommentarer
- Jag tror att
authorized_keys
- Hur som helst, detta fungerar inte ' om du har mer än en tangent!
id_rsa
-nyckel har ett lösenord.ssh-add
, men bara körassh
direkt. Du bör få ett fönster som dyker upp som kommer att vara lösenordsfrasen för nyckeln och med en kryssruta så att du kan lagra den i din nyckelring.