Was ist ein SSH-Agent-Forwarding und Wie Verwenden Sie Es?

0
278
Funtap / Shutterstock

SSH-agent-forwarding erlaubt es Ihnen, Ihre privaten, lokalen SSH-Schlüssel aus der Ferne, ohne sich Gedanken über das verlassen vertraulichen Daten auf dem server, mit dem Sie arbeiten. Es ist gebaut in ssh, und ist einfach einzurichten und zu verwenden.

Was Ist ein SSH-Agent?

Ihren öffentlichen SSH-Schlüssel wie Ihren Benutzernamen oder Ihre Identität, und Sie können teilen Sie es mit jeder. Ihre privaten SSH-Schlüssel ist wie ein Passwort, gespeichert wird lokal auf Ihrem computer. Dies ist aber wie speichern Sie Ihre Passwörter auf ein sticky note—jeder kann Sie sich ansehen, wenn Sie Zugriff darauf haben. Also, für die Sicherheit, SSH werden Sie aufgefordert, eine passphrase eingeben, wenn Sie die Erstellung Ihrer Schlüssel (hoffentlich haben Sie nicht diesen Schritt überspringen) – und es verwenden, dass die passphrase zum verschlüsseln und entschlüsseln Ihren privaten Schlüssel.

Dies bedeutet jedoch, müssen Sie Ihre passphrase einzugeben jedes mal, wenn Sie brauchen, um Ihren privaten Schlüssel verwenden, die ärgerlich. Um dies zu verwalten, die meisten SSH-Implementierungen verwenden Sie einen Agenten, die hält Ihre Schlüssel entschlüsselt im Speicher. Dies bedeutet, dass Sie nur brauchen, um es zu entsperren einmal, und es wird bestehen bleiben, bis Sie neu starten, lassen Sie sich in Ihren Servern sicher, ohne eine passphrase prompt.

Was ist ein SSH-Agent-Forwarding?

SSH-agent-forwarding ist wie wenn man eine weitere Ebene tiefer. Zum Beispiel, Stell dir vor, du bist eine Verbindung zu einem remote-server, und Sie möchten, git pull code, dass man die Speicherung auf Github. Sie wollen für die Verwendung von SSH-Authentifizierung bei Github, aber Sie nicht möchten, dass Ihre privaten Schlüssel auf dem remote-server, nur auf Ihrem Rechner.

Um dieses problem zu lösen, können Sie öffnen Sie Ihren lokalen SSH-Agenten auf dem remote-server, so dass es zu handeln, wie Sie, während Sie verbunden sind. Funktioniert dies nicht, senden Sie Ihre privaten Schlüssel über das internet, nicht einmal, während Sie verschlüsselt sind; es ermöglicht einen remote-server Zugriff auf Ihren lokalen SSH-agent, und überprüfen Sie Ihre Identität.

Es funktioniert wie folgt: Fragen Sie Ihren remote-server zu ziehen, einige code von Github und Github sagt “wer sind Sie?” an den server. In der Regel würde der server konsultiert seine eigenen Dateien id_rsa zu beantworten, sondern es wird uns die Frage auf Ihrem lokalen Rechner. Ihrem lokalen Rechner beantwortet die Frage und sendet die Antwort (die nicht Ihren privaten Schlüssel) an den server, der leitet Sie zurück zu Github. Github ist nicht egal, dass die lokale Maschine die Frage beantwortet, es sieht nur, dass es schon beantwortet, und können Sie verbinden.

Wie Aktivieren Sie die SSH-Agent-Forwarding

Auf Mac und Linux, SSH-agent-forwarding ist in der ssh und der ssh-agent-Prozess wird automatisch gestartet. Alles, was Sie tun müssen, ist, stellen Sie sicher, dass Ihre Schlüssel sind, um ssh-agent und konfigurieren Sie ssh verwenden Sie die Weiterleitung.

Fügen Sie Schlüssel dem ssh-agent

Sie können das Dienstprogramm ssh-add, um die Schlüssel zu Ihrem lokalen Agenten. Vorausgesetzt, dass Ihr privater Schlüssel gespeichert ist in id_rsa, die Sie ausführen können:

ssh-add ~/.ssh/id_rsa

Sie können auch manuell einfügen in den Schlüssel und nicht mit id_rsa. Überprüfen Sie, dass der Schlüssel korrekt Hinzugefügt mit:

ssh-add-L

Wenn es ist, soll es ausspucken Ihre Schlüssel.

Fügen Sie Tasten auf macOS

Auf macOS, Sie werden stattdessen brauchen, um zu laufen:

ssh-add-K ~/.ssh/id_rsa

Das -K flag speichert den Schlüssel im macOS Schlüsselbund, die notwendig ist, für die es sich zu erinnern, Ihre Schlüssel durch Neustarts.

Ermöglichen die Weiterleitung in der Client Config

Öffnen Sie Ihre ~/.ssh/config-Datei auf Ihrem lokalen Rechner, oder ein neues machen, wenn es leer ist. Wir werden eine neue Regel, um sicherzustellen, agent-forwarding aktiviert ist für diesen server die domain:

Host-Beispiel
ForwardAgent yes

Ersetzen Sie beispielsweise mit Ihren Servern, domain-Namen oder die IP-Adresse. Sie können die Platzhalter * für den Gastgeber, aber dann werden Sie forwarding-Zugriff auf Ihren privaten Schlüssel auf jedem server, den Sie verbinden, das ist wahrscheinlich nicht das, was Sie wollen.

Je nach Betriebssystem müssen Sie eventuell auch die config Dateien unter /etc/ssh/ssh_config für macOS oder /etc/ssh_config für Ubuntu. Diese Dateien können Sie überschreiben die user-config-Datei unter ~/.ssh/config, so stellen Sie sicher, dass nichts in Konflikt. Zeilen, die mit # beginnen, sind auskommentiert, und haben keine Wirkung.

Sie können auch manuell aktivieren der agent-Weiterleitung für eine domain mit ssh -Benutzer@host, die bypass-alle config-Dateien. Wenn Sie möchten, eine einfache Methode für die Weiterleitung von ohne Sie zu berühren, config, können Sie hinzufügen, alias ssh=”ssh -A”, um Ihre bash-Einstellungen, aber das ist das gleiche wie mit einem wildcard-host, so dass wir nicht empfehlen es für etwas Sicherheit-konzentriert.

Test SSH-Forwarding

Wenn Sie nicht zwei Servern auf der hand, ist der einfachste Weg, um zu testen, ob SSH-forwarding zu arbeiten ist, um Ihre öffentlichen Schlüssel aus Ihrem lokalen Rechner auf Ihre Github-Profil und versuchen auf SSH von einem remote-server:

ssh git@github.com

Wenn es funktioniert, sollten Sie sehen Sie Ihren Benutzernamen, und Sie sollten in der Lage sein, um push-und pull-code aus einem repo, ohne jemals zu setzen private Schlüssel auf dem server.

Setup-SSH Forwarding für Windows-Clients

Seit Windows ist das nicht ein Unix-Betriebssystem, wird das setup variieren, je nachdem, wie genau läufst du ssh in den ersten Platz.

Wenn Sie das Linux-Subsystem für Windows, das Ihnen erlaubt, führen Sie die bash unter Windows, das setup das gleiche wie auf Linux oder macOS, da es vollständig virtualisieren Linux-Distribution, um die Befehlszeile ausführen.

Wenn Sie mit Git Bash, die Sie setup ist das gleiche wie auf Linux, aber Sie müssen manuell starten Sie ssh-agent beim starten der shell, die Sie tun können, mit einem startup-Skript .bashrc.

Wenn Sie PuTTY verwenden, ist das setup ganz einfach. Von der Konfiguration, wechseln Sie zu Connection – > SSH – > Auth ” und aktivieren Sie “Allow agent forwarding.”

Sie können auch fügen Sie Ihren privaten Schlüssel-Datei aus dem gleichen Bereich. PuTTY mit der SSH-agent für Sie, so dass Sie nicht herum zu verwirren mit irgendwelchen config-Dateien.

Was Tun, wenn der SSH-Forwarding nicht Funktioniert

Stellen Sie sicher, dass Sie tatsächlich über ein SSH-Schlüssel in den ersten Platz; wenn Sie nicht, führen Sie ssh-keygen, die Ihr privater Schlüssel in ~/.ssh/id_rsa und Ihren öffentlichen Schlüssel in ~/.ssh/id_rsa.pub.

Stellen Sie sicher, dass Ihre SSH Schlüssel richtig funktioniert mit regulären auth, und fügen Sie Sie zu ssh-agent. Sie können fügen Sie Schlüssel mittels ssh-add hinzu.

Der ssh-agent-Prozess auch ausgeführt werden muss. Auf macOS und Linux, es sollte automatisch starten, aber Sie können überprüfen, dass es läuft mit:

echo “$SSH_AUTH_SOCK”

Wenn es korrekt eingerichtet ist, sollten Sie einen Listener-socket zurückgegeben.

Stellen Sie sicher, dass Ihre config-Dateien richtig sind, enthalten ForwardAgent yes, und stellen Sie sicher, dass keine anderen config-Dateien überschreibt dieses Verhalten. Um zu überprüfen, welche config-Dateien SSH verwenden, können Sie ssh im verbose-Modus:

ssh -v git@github.com

Die anzeigen sollen, welche config-Dateien verwendet werden. Dateien angezeigt, die später in dieser Liste Vorrang vor den früheren-Dateien.

Und natürlich, Kommandozeilen-Optionen überschreiben von config-Dateien. Falls die agent-forwarding funktioniert nicht mit ssh Ein, und Ihre Tasten sind richtig konfiguriert Ihr agent, dann ist etwas anderes falsch ist, und Sie müssen überprüfen Sie Ihre Verbindung zum Server in der Kette.