Frage Der einfachste Weg, um ssh-Schlüssel auf einen anderen Rechner zu kopieren?


Ich bin zu Hause faul und benutze die Passwortauthentifizierung für meine Heimcomputer. Ich bin bereit, zur schlüsselbasierten Authentifizierung überzugehen. Es gibt viele Möglichkeiten im Internet, wie man das macht, einschließlich Catting, dann den Schlüssel über den Schlüssel ziehen, den Schlüssel direkt überlesen usw.

Ich suche nach dem einfachsten und empfohlenen Weg, um einen Schlüssel zu kopieren, hoffentlich gibt es einen Convenience-Wrapper irgendwo im Ubuntu ssh-Paket?

Ich bin mir bereits bewusst wie man Passwort Logins abstellt.


296
2017-09-27 20:24


Ursprung


askubuntu.com/questions/307881/ ... - Vineet


Antworten:


Das ssh-copy-id Befehl (in der openssh-Client Paket und standardmäßig installiert) tut genau das:

ssh-copy-id user@hostname.example.com

Kopiert den öffentlichen Schlüssel Ihrer Standardidentität (use -i identity_file für andere Identitäten) an den Remote-Host.

Die Standardidentität ist Ihr "Standard" -SH-Schlüssel. Es besteht aus zwei Dateien (öffentlicher und privater Schlüssel) in Ihrem ~/.ssh Verzeichnis, normalerweise benannt identity, id_rsa oder id_dsa (und das gleiche mit .pub), abhängig von der Art des Schlüssels. Wenn Sie nicht mehr als einen SSH-Schlüssel erstellt haben, müssen Sie sich nicht um die Angabe der Identität kümmern, ssh-copy-id wählt sie automatisch aus.

Falls Sie keine Identität haben, können Sie eine mit dem Tool erstellen ssh-keygen.

Wenn der Server einen anderen als den Standardport verwendet (22) sollten Sie auf diese Weise Anführungszeichen verwenden (Quelle):

ssh-copy-id "user@hostname.example.com -p <port-number>"

408
2017-09-27 21:01



Was ist die Standardidentität? - Oxwivi
@Oxwivi: Die Standardidentität ist Ihr "Standard" SSH-Schlüssel. Es besteht aus zwei Dateien (öffentlicher und privater Schlüssel) in Ihrem ~/.ssh Verzeichnis, das normalerweise "identity" genannt wird, id_rsa` oder id_dsa (und das gleiche mit .pub), abhängig von der Art des Schlüssels. Wenn Sie nicht mehr als einen SSH-Schlüssel erstellt haben, müssen Sie sich nicht um die Angabe der Datei kümmern, ssh-copy-id wird es einfach automatisch auswählen. - Marcel Stimberg
für verschiedene Ports verwenden Sie dies: ssh-copy-id "user@host -p 6842" - jibon57
Was, wenn der Remote-Server, auf den du kopierst, keine Passwort-Eingabeaufforderungen zulässt und grundsätzlich für den SSH-Zugriff gesperrt ist? - Cyle
Auf Mac können Sie tun brew install ssh-copy-id und dann den Befehl ausführen. - Avishai


Ich mag die Antwort von Marcel. Ich kannte diesen Befehl nicht. Ich habe immer benutzt, was ich auf einem gefunden hatte SUN Webseite:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'

Ich dachte, ich möchte es hier noch posten, weil es eine gute Illustration dessen ist, was man erreichen kann Shell-Code mit der Kraft von ssh. Aber mit dem ssh-copy-id ist definitiv ein sicherer Weg, es richtig zu machen!

Beachten Sie, dass wenn der Ordner .ssh existiert nicht bereits, der obige Befehl wird fehlschlagen. Außerdem könnte es besser sein, wenn die Datei erstellt wird, um eine minimale mögliche Berechtigung festzulegen (im Grunde nur für den Eigentümer schreibend). Hier ist ein fortgeschrittener Befehl:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

113
2017-10-11 22:26



Diese genauen Befehle funktionieren auch von einem Mac aus - Mihai P.
Es sollte unter jedem Unix mit den meisten Shells funktionieren. Ich habe den Post mit einem aktualisierten Befehl für den Fall aktualisiert .ssh existiert nicht auf der entfernten Seite. - Huygens
Das cat ist nicht notwendig - eine normale Eingabeumleitung ist ausreichend, z. < ~/.ssh/id_rsa.pub | ssh ... - maxschlepzig
@ Huygens Danke. Nützlicher, um sich daran zu erinnern, da Sie nichts installieren müssen und es auch gut für die Ausführung von Fremdbefehlen sein kann, z. Ändern der serverseitigen Berechtigungen, wie Sie in Ihrem erweiterten Beispiel gezeigt haben. - Jonathan Komar
Ich bevorzuge diesen Weg, weil du damit verbalen ssh verwenden kannst, der hilfreich ist, herauszufinden, warum Dinge kaputt sind. sshcopyid nur eingefroren und hat nie funktioniert, das ging perfekt. - Sirens


Grafische Methode

  1. Öffnen Anwendungen ▸ Passwörter und Schlüssel ▸ Meine persönlichen Schlüssel.
  2. Wählen Sie Ihren Schlüssel und klicken Sie dann auf Fernbedienung ▸ Konfigurieren Sie den Schlüssel für Secure Shell.

Set Up Computer for SSH Connection


25
2017-09-27 20:32



Ich habe keine "Passwörter und Verschlüsselungsschlüssel" in meinem Menü. - Jorge Castro
Welche Ubuntu-Version verwendest du? In Ubuntu 10.04 LTS sollte dies standardmäßig verfügbar sein. - ændrük
10.10, habe gerade das Tag hinzugefügt. Marcels Antwort ist, was ich suche, obwohl +1 für Ihre Desktop-orientierte Antwort! - Jorge Castro
Dieses Programm ist seahorse. - Gilles
Ich denke, diese Anwendung befindet sich im Menü System-> Preferences in 10.10 (kann nicht sofort überprüft werden, ich bin am 10.04) - Huygens


Unter Ubuntu können Sie Ihre Schlüssel vom Launchpad holen:

ssh-import-id [launchpad account name]

Einzelheiten:

  1. Sie brauchen also ein Launchpad-Konto einloggen oder Konto erstellen
  2. Klicken Sie nach dem Anmelden auf die Schaltfläche neben SSH-Schlüssel:
  3. Fügen Sie den Inhalt Ihrer öffentlichen Schlüsseldatei in dieses Feld ein (einschließlich des Kommentars). Ein solcher Schlüssel sieht so aus:

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
    

    Hier, ssh-rsa zeigt an, dass der Schlüssel ein RSA-Schlüssel ist, AAAAB3Nza .... UyDOFDqJp ist der eigentliche Schlüssel und lekensteyn ist der Kommentar.

  4. Speichern Sie den Schlüssel durch Drücken von Öffentlicher Schlüssel importieren
  5. Wenn alles gut gegangen ist, sollte Ihr Schlüssel jetzt unter aufgelistet sein SSH-Schlüssel:

Das Paket ssh-import-id muss auf der Maschine installiert werden, auf die von Remote zugegriffen werden muss. Dieses Paket wird zusammen mit dem installiert openssh-serverPaket, wie es ein empfohlenes Paket für ist openssh-server. Nachdem ich das sichergestellt habe ssh-import-id wurde installiert Führen Sie auf dem Clientcomputer Folgendes aus:

ssh-import-id [launchpad account name]

Dadurch wird der öffentliche Schlüssel von den Launchpad-Servern über HTTPS heruntergeladen, was Sie vor MITM-Angriffen schützt.

Unter Ubuntu Lucid und vorher können Sie das gleiche erreichen mit:

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

Das echo Befehl wird benötigt, um einen zusätzlichen Zeilenumbruch nach der Zeile mit dem SSH-Schlüssel zu erhalten.


18
2018-06-10 19:20





für benutzerdefinierten Port

ssh-copy-id -i "user@hostname.example.com -p2222"

-i wechselt standardmäßig zu ~ / .ssh / id_rsa.pub. Wenn Sie einen anderen Schlüssel wünschen, geben Sie den Pfad des Schlüssels nach -i ein

WARNUNG: Wenn Sie nicht das -i geschrieben haben, werden alle Ihre Schlüssel in ~ / .ssh kopiert


12
2018-03-08 20:16



Sind Sie sich sicher, dass WARNUNG? "-i identity_file - Verwenden Sie nur die in identity_file enthaltenen Schlüssel (anstatt nach Identitäten über ssh-add (1) oder in der default_ID_file zu suchen. Wenn der Dateiname nicht in .pub endet, wird dieser hinzugefügt. Wenn der Dateiname wird weggelassen, die default_ID_file wird verwendet. " - Yousha Aleayoub