Linux / Befehl ssh-copy-id: Installieren Sie einen öffentlichen Schlüssel auf einem entfernten Konto

ssh-copy-id bereitet die Anmeldung mit öffentlichem Schlüssel vor, indem der lokale SSH-öffentliche Schlüssel zum authorized_keys des Remote-Kontos hinzugefügt wird. Es ist kein Befehl, um den privaten Schlüssel auf den Server zu kopieren.

Zuerst müssen Sie in der Lage sein, auf das Zielkonto über die Passwortanmeldung oder eine andere Authentifizierungsmethode zuzugreifen. Durch die Angabe der Datei des öffentlichen Schlüssels, die bei -i registriert werden soll, wird die Wahrscheinlichkeit verringert, unter mehreren lokalen Schlüsseln den falschen auszuwählen. Das Tool versucht eine SSH-Verbindung, um zu überprüfen, ob der Schlüssel bereits registriert ist, und sein Verhalten kann je nach Serverrichtlinien variieren.

Grundlegende Syntax

ssh-copy-id [options] [user@]host

Installierte Implementierungen und Optionen können je nach Distribution variieren. Überprüfen Sie die Beschreibung auf Ihrem aktuellen System mit man ssh-copy-id.

Beispiele

Überprüfung des zu registrierenden öffentlichen Schlüssels

Überprüfen Sie die .pub am Ende der Datei und prüfen Sie den Fingerabdruck.

ssh-keygen -lf ~/.ssh/id_ed25519_work.pub

Vorschau vor der eigentlichen Registrierung

Überprüfen Sie den zu kopierenden Schlüssel in unterstützten Implementierungen. Es werden keine Änderungen am Remote-Server vorgenommen.

ssh-copy-id -n -i ~/.ssh/id_ed25519_work.pub alice@server.example.com

Registrierung des öffentlichen Schlüssels

Nach der Überprüfung des Remote-Host-Schlüssels fügen Sie den öffentlichen Schlüssel zum entsprechenden Konto hinzu.

ssh-copy-id -i ~/.ssh/id_ed25519_work.pub alice@server.example.com

Überprüfen Sie nach der Registrierung des öffentlichen Schlüssels

ssh-copy-id fügt Ihren lokalen öffentlichen Schlüssel der Liste der autorisierten Schlüssel auf dem Remote-Konto hinzu. Sie müssen zunächst eine Verbindung zum Remote-Konto herstellen können und die notwendigen Berechtigungen für dieses Konto haben.

ssh-copy-id -i ~/.ssh/id_ed25519_work.pub user@server.example.test

Ausgabe, die bei erfolgreicher Registrierung erscheinen kann:

Number of key(s) added: 1

Überprüfen Sie nach der Registrierung, ob die tatsächliche öffentliche Schlüsselauthentifizierung mit ssh -i ~/.ssh/id_ed25519_work user@server.example.test funktioniert. Gehen Sie nicht davon aus, dass es sicher ist, die Passwortanmeldung nur aufgrund einer Erfolgsmeldung zu deaktivieren. Sie sollten zuerst andere Administrator-Konten und Notfallzugangsrouten bestätigen.

Hauptoptionen und Format

Optionen/Format Beschreibung
-i public_key_file Wählen Sie explizit den öffentlichen Schlüssel zur Registrierung aus.
-n Zeigen Sie die auszuführenden Operationen an, ohne tatsächlich zu registrieren.
-p port Geben Sie den Port des entfernten SSH-Servers an.
-s Verwenden Sie die SFTP-Übertragungsmethode bei unterstützten Implementierungen.
-f Sie können ohne Überprüfung bereits registrierter Schlüssel zwangsweise hinzufügen, achten Sie also auf Doppelungen.

Vorsichtsmaßnahmen bei der Verwendung

Ignorieren Sie keine Warnungen bezüglich des Host-Schlüssels. Deaktivieren Sie die vorhandene Passwortauthentifizierung nicht, bis Sie überprüft haben, dass Sie sich nach der Registrierung von einem neuen Terminal mit ssh -i ~/.ssh/id_ed25519_work alice@server.example.com anmelden können. Um einen registrierten öffentlichen Schlüssel zu entfernen, sichern Sie die entsprechende Zeile in ~/.ssh/authorized_keys des Remote-Kontos und löschen Sie sie anschließend, wobei andere Schlüssel erhalten bleiben.

Häufig gestellte Fragen

Warum wird nach einem Passwort gefragt, selbst nachdem ssh-copy-id ausgeführt wurde?

Während der ersten Registrierung kann eine vorhandene Authentifizierung erforderlich sein. Wenn weiterhin nach einem Passwort gefragt wird, überprüfen Sie den ausgewählten privaten Schlüssel, die Berechtigungen der authorized_keys des Servers und die SSH-Servereinstellungen.

Offizielle Dokumentation

Sie können das genaue Verhalten der Optionen und Implementierungsunterschiede in der offiziellen ssh-copy-id-Dokumentation nachprüfen.