Wie exportiere ich den öffentlichen Schlüssel meines SSH?

12

Ich muss SSH-Sitzungen zwischen zwei Servern einrichten und möchte nicht, dass das Skript jedes Mal den Benutzernamen und das Kennwort eingibt.

Ich kann jedoch nicht herausfinden, wo der SSH-Server seine Konfiguration verwendet.

bash-2.05# ssh -V
Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f

Ich habe Zertifikatsdateien in / etc / ssh / und ~ / .ssh /. Ich kann nur eine Konfigurationsdatei für SSH finden und sie befindet sich in / etc / ssh / ssh_config, enthält jedoch keine Daten (alles ist auskommentiert).

Weiß jemand, wie ich herausfinden kann, wo das Zertifikat gespeichert ist, oder wie ich es exportieren kann, um es auf den anderen Server zu übertragen? Ich hatte gehofft, dass die Konfigurationsdateien mir die Antwort geben würden, aber sie bieten wenig bis gar keine Hilfe.

Chris Dale
quelle

Antworten:

17

Angenommen, Sie meinen Public-Key-Authentifizierung auf Benutzerebene mit "Zertifikat" und haben sie ssh-keygenmit dem Standardverzeichnis erstellt, dann sollten sie sich an dem Ort befinden, an dem Ihr ssh-Client sie findet. Der Schlüssel besteht aus einem privaten Teil, der normalerweise in gespeichert ist, ~/.ssh/id_rsaund einem öffentlichen Teil in ~/.ssh/id_rsa.pub. Der letzte muss in der Regel an den Remote-Server übertragen werden ~/.ssh/authorized_keys.

Die einfachste Methode zum Übertragen des Schlüssels auf einen anderen Server ist die Verwendung ssh-copy-idauf dem Zielcomputer. Wenn Sie bei der Erstellung den Standardspeicherort verwendet haben, wird dieser Schlüssel automatisch verwendet.

Beachten Sie, dass dies /etc/ssh/ssh_configfür den Kunden ist. Auf dem Server müssen Sie suchen /etc/ssh/sshd_config. In Ihrem Setup dienen beide Server als ssh-Client und ssh-Server. Sie müssten also beide Dateien an beiden Enden betrachten.

Carsten Thiel
quelle
Habe es funktioniert. Vielen Dank. Ich musste auf meinem Client nur den Parameter -i (Identität) angeben, der auf den privaten Schlüssel zeigte.
Chris Dale
2

Sie müssen den öffentlichen ssh-Schlüssel für den Benutzer finden, der der Anmeldebenutzer für das Skript ist.

Wenn ich beispielsweise ServerA und ServerB habe, würde ich Folgendes tun.

sudo adduser scriptrunner
...
sudo su - scriptrunner
ssh-keygen
...
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...... scriptrunner@serverA

dann mache etwas ähnliches auf ServerB

Geben Sie dann auf ServerA den öffentlichen Schlüssel des Scriptrunner-Benutzers von ServerB ein /home/scriptrunner/.ssh/authorized_keys

und mache das Gegenteil auf serverB (benutze serverAs scriptrunner user on in authorized_keys in /home/scriptrunner/.ssh/authorized_keysauf serverB)

Dann sollten Sie in der Lage sein, ssh scriptrunner@serverAvon ServerB mit dem Schlüssel und umgekehrt zu tun .

Sie können auch ssh-copy-iddas authorized_keys-Bit verwenden.

Tom O'Connor
quelle
1

Um eine SSH-Verbindung mit öffentlicher Schlüsselauthentifizierung herzustellen, muss der Benutzer, der die Verbindung initiiert, über ein öffentliches / privates Schlüsselpaar verfügen. Bei vielen Linux-Distributionen werden diese Schlüssel nicht standardmäßig generiert und müssen vom Benutzer selbst (oder vom Administrator in seinem Namen) generiert werden.

Wenn Sie als der relevante Benutzer angemeldet sind, wechseln Sie in Ihr Ausgangsverzeichnis und führen Sie aus

ssh-keygen

Akzeptieren Sie alle Standardeinstellungen. In ~ / .ssh / id_rsa und ~ / .ssh / id_rsa.pub wird ein neues Schlüsselpaar erstellt. Kopieren Sie nun den öffentlichen Schlüssel und fügen Sie ihn in die Datei ~ / .ssh / authorized_keys des Zielbenutzerkontos auf dem Zielcomputer ein. Aktivieren Sie dann die Authentifizierung mit öffentlichem Schlüssel auf dem Zielcomputer (in / etc / ssh / sshd_config).

HINWEIS : Es gibt viele mögliche Fallstricke bei diesem Vorgang, wenn Sie ihn zum ersten Mal ausführen. Alle Berechtigungen müssen korrekt sein und die Dateien müssen sich an den richtigen Stellen befinden. Es ist wahrscheinlich am besten, wenn Sie einem HowTo wie diesem folgen .

wolfgangsz
quelle