2009-12-28 12:08:48 +0000 2009-12-28 12:08:48 +0000
143
143

Hoe gebruik je Mac OS X Sleutelhanger met SSH sleutels?

Ik heb begrepen dat sinds Mac OS X Leopard de sleutelhanger het opslaan van SSH sleutels ondersteunt. Kan iemand mij uitleggen hoe deze functie zou moeten werken.

Ik heb een aantal RSA sleutels die ik heb gegenereerd opgeslagen in mijn ~/.ssh directory voor toegang tot verschillende servers. Ik heb geen passphrases ingesteld op die sleutels. Om in te loggen op die servers gebruik ik de volgende commando’s in de Terminal:

eval `ssh-agent` ssh-add ~/.ssh/some\_key\_rsa ssh user@server

(Ik heb wat Bash functies geschreven om dit makkelijker te maken.)

Is er een betere manier om dit te doen met de Keychain?

Antwoorden (9)

255
255
255
2011-04-11 19:58:42 +0000

Vanaf de Leopard uitgave van OS X, is ssh-agent nauwer geïntegreerd met Keychain. Het is mogelijk om de passphrases van al je SSH sleutels veilig op te slaan in Keychain, van waaruit ssh-agent ze zal lezen bij het opstarten. Het komt er op neer dat het eenvoudig is om je sleutels te beveiligen met passphrases, maar dat je nooit de passphrase hoeft in te typen om ze te gebruiken! Hier staat hoe:

Voeg de passphrase toe aan elke ssh sleutel aan keychain: (optie -k laadt alleen gewone private keys, slaat certificaten over)

ssh-add -K [path/to/private SSH key]

(let op: dat is een hoofdletter K)

Telkens als je je Mac herstart, worden alle SSH-sleutels in je sleutelbos automatisch geladen. U zou de sleutels moeten kunnen zien in het Keychain Access programma, en ook vanaf de commandoregel via:

ssh-add -l
82
82
82
2016-12-12 18:17:44 +0000

Vanaf macOS Sierra, laadt ssh-agent niet langer automatisch eerder geladen ssh sleutels wanneer je inlogt op je account. Dit is opzettelijk van Apple, ze wilden weer op één lijn komen met de mainstream OpenSSH implementatie. [1]

  • *

Zoals hier uitgelegd, is dit de aanbevolen methode sinds macOS 10.12.2:

  1. Voeg de volgende regels toe aan uw ~/.ssh/config bestand:

  2. Elke sleutel die u met het commando ssh-add /path/to/your/private/key/id_rsa aan de ssh-agent toevoegt, wordt automatisch aan de sleutelhanger toegevoegd, en zou bij het herstarten automatisch moeten worden geladen.


Het volgende is deprecated (ter referentie bewaard).

Om terug te gaan naar het vorige gedrag, zou je het ssh-add -A commando (dat automatisch alle ssh-sleutels laadt die pass-phrases in je sleutelhanger hebben) willen uitvoeren als je inlogt. Om dat te doen, volgt u deze stappen:

  1. Voeg eerst alle sleutels die u wilt auto-loaden toe aan de ssh-agent met het ssh-add -K /absolute/path/to/your/private/key/id_rsa commando. Het argument -K zorgt ervoor dat de pass-phrase van de sleutel wordt toegevoegd aan macOS’s sleutelbos. Zorg ervoor dat u het absolute pad naar de sleutel gebruikt. Als u een relatief pad gebruikt, zal het automatisch gelanceerde script uw sleutel niet vinden.

  2. Zorg ervoor dat al uw sleutels worden weergegeven als toegevoegd wanneer u ssh-add -A typt.

  3. Maak een bestand aan genaamd com.yourusername.ssh-add.plist in ~/Library/LaunchAgents/ met de onderstaande inhoud. Plist files zoals deze worden door launchd gebruikt om scripts uit te voeren wanneer je inlogt. [2] [3]

  4. Vertel launchd om het plist bestand dat je zojuist hebt gemaakt te laden door uit te voeren: launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist.

En je zou helemaal klaar moeten zijn.

34
34
34
2017-01-05 18:53:54 +0000

Er is een eenvoudigere manier dan Ricardo’s antwoord om je wachtwoord te bewaren tussen sessies/herstarts van je Mac met 10.12 Sierra.

  1. ssh-add -K ~/.ssh/id_rsa Let op: verander het pad naar waar uw id_rsa sleutel zich bevindt.
  2. ssh-add -A
  3. Maak (of bewerk als het bestaat) het volgende ~/.ssh/config bestand:

Apple heeft met opzet het gedrag voor ssh-agent in macOS 10.12 Sierra veranderd om niet langer automatisch de vorige SSH-sleutels te laden, zoals opgemerkt in deze OpenRadar , Twitter discussie , en Technische Notitie van Apple . De bovenstaande oplossing zal het oude gedrag van El Capitan nabootsen en uw wachtwoord onthouden.

17
17
17
2009-12-28 17:37:32 +0000

Om het te laten werken, moet de $SSH_AUTH_SOCK omgevingsvariabele naar /tmp/launch-xxxxxx/Listeners worden gewezen. Dit wordt verondersteld automatisch te gebeuren wanneer je inlogt. De luisteraar op die socket spreekt het ssh-agent protocol.

Je bash scripts starten je eigen ssh-agent (gespeld als ssh-agent, niet ssh_agent) en overschrijven de bestaande ssh-agent die voor je is ingesteld bij het inloggen.

Ook is het hele punt van de sleutelhanger om de wachtwoorden van je ssh sleutels op te slaan, maar je zegt dat je geen passphrases op die sleutels hebt ingesteld, dus ik weet niet zeker wat je verwacht van de sleutelhanger integratie.

Tenslotte, als je voor het eerst inlogt, zul je waarschijnlijk geen ssh-agent proces zien. Dat proces zal automatisch gestart worden door launch services de eerste keer dat iets probeert om die socket in /tmp te lezen.

10
10
10
2011-04-28 13:28:40 +0000

Opmerking: voor macOS Sierra, zie het recentere antwoord van ChrisJF .

Het [antwoord van Jeff McCarrell][2] is correct, behalve dat het commando om de paszin toe te voegen een en-streepje bevat in plaats van een koppelteken, d.w.z. –K in plaats van -K, waardoor een bericht met het effect van –K: No such file or directory ontstaat. Er zou moeten staan:

ssh-add -K [path/to/private SSH key]
6
6
6
2013-10-14 12:29:41 +0000

Ik had een soortgelijk probleem toen ik probeerde in te loggen met een client ssh cert. In dit specifieke geval was het voor toegang tot een git repository. Dit was de situatie:

  • De sleutel was opgeslagen in ~/.ssh/
  • De private sleutel heeft een passphrase.
  • De passphrase is opgeslagen in de OS X login keychain. ~/Library/Keychains/login.keychain
  • De verbinding was als volgt: mijn mac -> remote mac -> git/ssh server
  • Mac OS X 10.8.5

Toen ik verbinding maakte met remote mac via remote desktop, had ik geen probleem. Maar toen ik met SSH verbinding maakte met de remote mac, werd er iedere keer om de ssh passphrase gevraagd. De volgende stappen losten het voor mij op.

  1. security unlock-keychain De passphrase is opgeslagen in de login keychain. Hierdoor wordt deze ontgrendeld en krijgt ssh-agent er toegang toe.
  2. evalssh-agent -s`` Start ssh-agent voor shell gebruik. Het zal de passphrase uit de sleutelhanger halen en gebruiken om de private ssh sleutel te ontgrendelen.
  3. Breng de ssh/git verbinding tot stand en doe mijn werk.
  4. evalssh-agent -k`` Dood de draaiende ssh-agent.
  5. security lock-keychain Zet de sleutelhanger weer op slot.
6
6
6
2009-12-28 12:55:13 +0000

Ik vermoed dat je niet het standaard ssh commando gebruikt. Hebt u ssh via poorten geïnstalleerd? Probeer which ssh om te zien welk ssh commando je gebruikt.

Normaal zou er een dialoogvenster moeten verschijnen om je wachtwoord te vragen, als het nog niet in je sleutelhanger zit.

4
4
4
2014-03-26 09:45:49 +0000

Zie ook:

security import priv_key.p12 -k ~/Library/Keychains/login.keychain
security import pub_key.pem -k ~/Library/Keychains/login.keychain

… deze opmerking toevoegen omdat er om meer details werd gevraagd: het “security” commando is in staat om sleutels (en andere dingen) direct in Keychains te importeren. Het mooie is dat je, in tegenstelling tot ssh-add, de sleutelhanger kunt specificeren. Dit maakt het mogelijk om direct in de systeem Keychain te importeren (“man security” om te leren hoe)

1
1
1
2017-01-26 10:39:16 +0000

De beste en door Apple bedoelde oplossing (sinds macOS 10.12.2) wordt hier

Dus gewoon het volgende doen:

echo “UseKeychain yes” > ~/.ssh/config