2012-09-04 4 views
32

Ich manuell Websites über SSH bereitstellen, verwalte ich Quellcode in github/bitbucket. Für jede neue Seite erzeuge ich gerade ein neues Schlüsselpaar auf dem Server und füge es zu github/bitbucket hinzu, so dass ich Chancen vom Server ziehen kann.Wie lokale Schlüsselpaar in einer SSH-Sitzung weiterleiten?

stieß ich auf eine Funktion in Capistrano zum Ziehen Aktualisierungen der Server lokalen Maschine Schlüsselpaar zu verwenden, die ssh_options[:forward_agent] = true

ist Wie kann ich etwas tun und meine lokalen Maschine Schlüsselpaar an den Server weiterleiten ich SSH bin -in, damit ich vermeiden kann, für jede neue Site Keys in github/bitbucket hinzuzufügen.

Danke.

Antwort

45

Dies erwies sich als sehr einfach erwiesen, komplette Anleitung ist hier Using SSH Forwarding

Im Wesentlichen müssen Sie eine ~/.ssh/config-Datei erstellen, wenn es nicht existiert.

Dann fügen Sie die Hosts (entweder Domain-Namen oder die IP-Adresse in der Datei und legen ForwardAgent yes)

Beispielcode:

Host example.com 
    ForwardAgent yes 

macht SSH Leben viel einfacher.

+5

Großer Artikel in der Antwort verknüpft; Um für OSX-Benutzer zusammenzufassen, müssen Sie möglicherweise 'sudo vim/etc/ssh_config' und die' ForwardAgent no'-Host-Wildcard-Deaktivierung und dann 'ssh-add ~/.ssh/your_key' entfernen, damit der lokale Agent diese Identität weiterleiten kann. – cfeduke

+0

Hinzufügen von 'echo' Host example.com \ n ForwardAgent ja '>> ~/.ssh/config' funktioniert nicht, wenn Sie mit ssh eine Verbindung herstellen, indem Sie public ip 'ssh node-1.example.com' verwenden und dann mit 'springen ssh $ {user} @ $ (Hostname -s) 'verwendet den Agenten weiter. Es wird nach Ihrem Passwort gefragt. – BigDong

+5

auf meinem OSX El Capitan musste ich überhaupt nicht mit/etc/ssh_config herumspielen, aber ich musste 'ssh-add' ausführen, bevor die Weiterleitung für mich funktionierte. – the0ther

0

Die Konfigurationsdatei ist sehr hilfreich, aber der Trick bei der Agentenweiterleitung ist der Befehl ssh-add. Es scheint, dass dies vor allen Remote-Verbindungen oder nach dem Neustart des Computers initial ausgelöst werden muss. So fügen permanent der Schlüssel versuchen, die folgende Lösung aus dem Benutzer daminetreg: Add private key permanently with ssh-add on Ubuntu

10
  1. erstellen ~/.ssh/config
  2. Füllen Sie ihn mit (Host-Adresse ist die Adresse des Hosts Sie creds ermöglichen werden weitergeleitet):

    Host [host address] 
        ForwardAgent yes 
    
  3. Wenn Sie nicht bereits ssh-agent laufen, laufen sie:

    ssh-agent 
    
  4. Nehmen Sie die Ausgabe dieses Befehls und fügen Sie sie in das Terminal ein. Dadurch werden die Umgebungsvariablen festgelegt, die für die Weiterleitung des Agenten festgelegt werden müssen.

    eval "$(ssh-agent)" 
    
  5. Fügen Sie den Schlüssel, den Sie den SSH-Agenten weitergeleitet werden sollen: Optional können Sie diese und Schritt 3 mit ersetzen

    ssh-add [path to key if there is one]/[key_name].pem 
    
  6. Melden Sie sich beim Remote-Host:

    ssh -A [user]@[hostname] 
    
  7. Von hier aus, wenn Sie sich bei einem anderen Host anmelden, der diesen Schlüssel akzeptiert, wird es einfach funktionieren:

    ssh [user]@[hostname]