Ich bin zu Hause faul und verwende die Kennwortauthentifizierung für meine Heimcomputer. Ich bin bereit, zur schlüsselbasierten Authentifizierung überzugehen. Es gibt viele Möglichkeiten im Internet, wie dies zu tun ist, einschließlich des Kattierens, des Überschreibens des Schlüssels, des direkten Überschreibens des Schlüssels usw.
Ich suche nach der einfachsten und empfohlenen Möglichkeit, einen Schlüssel zu kopieren. Gibt es hoffentlich irgendwo im Ubuntu-ssh-Paket einen Convenience-Wrapper?
Ich bin mir bereits darüber im Klaren, wie man Passwortanmeldungen deaktiviert .
Antworten:
Der
ssh-copy-id
Befehl (im openssh-client- Paket und standardmäßig installiert) macht genau das:kopiert den öffentlichen Schlüssel Ihrer Standardidentität (
-i identity_file
für andere Identitäten verwenden) auf den Remote-Host.Die Standardidentität ist Ihr "Standard" -SH-Schlüssel. Es besteht aus zwei Dateien (Öffentliche und private Schlüssel) in Ihrem
~/.ssh
Verzeichnis, in der Regel genanntidentity
,id_rsa
,id_dsa
,id_ecdsa
oderid_ed25519
(und das gleiches 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 diese einfach automatisch aus.Falls Sie keine Identität haben, können Sie mit dem Tool eine generieren
ssh-keygen
.Wenn der Server einen anderen als den Standardport (
22
) verwendet, sollten Sie die folgenden Anführungszeichen verwenden ( Quelle ):quelle
ssh-copy-id "user@host -p 6842"
brew install ssh-copy-id
den Befehl ausführen.Ich mag die Antwort von Marcel. Ich kannte diesen Befehl nicht. Ich habe immer das verwendet, was ich auf der Oracle-Website gefunden hatte :
Ich dachte, es hier noch zu posten, weil es ein gutes Beispiel dafür ist, was mit Shell-Code mit der Kraft von erreicht werden kann
ssh
. Aber mit demssh-copy-id
ist es definitiv sicherer, es richtig zu machen!Beachten Sie, dass
.ssh
der obige Befehl fehlschlägt , wenn der Ordner noch nicht vorhanden ist. Darüber hinaus ist es möglicherweise besser, beim Erstellen der Datei eine möglichst geringe Berechtigung festzulegen (im Grunde nur Lese- und Schreibzugriff für Besitzer). Hier ist ein erweiterter Befehl:quelle
.ssh
auf der Remote-Seite nicht vorhanden ist.cat
ist nicht nötig - eine normale< ~/.ssh/id_rsa.pub | ssh ...
Grafische Methode
quelle
seahorse
.Unter Ubuntu können Sie Ihre Schlüssel vom Launchpad abrufen:
Details :
Fügen Sie den Inhalt Ihrer öffentlichen Schlüsseldatei (einschließlich Kommentar) in dieses Feld ein. Ein solcher Schlüssel sieht so aus:
Hier wird
ssh-rsa
angegeben, dass der Schlüssel ein RSA-SchlüsselAAAAB3Nza .... UyDOFDqJp
ist, der tatsächliche Schlüssel undlekensteyn
der Kommentar.Das Paket
ssh-import-id
muss auf dem Computer installiert sein, auf den von einem entfernten Standort aus zugegriffen werden muss. Dieses Paket wird zusammen mit demopenssh-server
Paket installiert , da es ein empfohlenes Paket für istopenssh-server
. Nachdem Sie sichergestellt haben, dassssh-import-id
auf dem Clientcomputer Folgendes installiert wurde, führen Sie Folgendes aus:Dadurch wird der öffentliche Schlüssel über HTTPS von den Launchpad-Servern heruntergeladen, wodurch Sie vor MITM-Angriffen geschützt werden.
Unter Ubuntu Lucid und früher können Sie dasselbe erreichen mit:
Der
echo
Befehl wird benötigt, um nach der Zeile mit dem SSH-Schlüssel einen zusätzlichen Zeilenumbruch zu erhalten.quelle
für kundenspezifischen Hafen
-i wechselt standardmäßig zu ~ / .ssh / id_rsa.pub. Wenn Sie einen anderen Schlüssel möchten, setzen Sie den Pfad des Schlüssels nach -i
WARNUNG: Wenn Sie das -i nicht geschrieben haben, werden alle in ~ / .ssh enthaltenen Schlüssel kopiert
quelle
ssh-copy-id
macht genau das. Ich bin nicht sicher, warum einige der anderen Antworten hier ungenaue Informationen hinzufügen. Die Hilfe zeigt Folgendes:Ich habe gerade Folgendes auf einem Ubuntu 18.04-Client mit einem CentOS 7.6-Server versucht und es hat wie ein Zauber funktioniert. Das Beispiel zeigt die Verwendung eines benutzerdefinierten Ports von
2222
und die Angabe eines öffentlichen Schlüssels unter~/.ssh/path-to-rsa.pub
Bevor ich den Befehl ausgeführt habe, habe ich den
-n
Schalter am Ende verwendet, um einen Probelauf durchzuführen, der bestätigte, dass der Befehl wie beabsichtigt funktioniert. Nachdem ich es bestätigt hatte, führte ich den Befehl wie oben beschrieben ohne den-n
Schalter erneut aus.quelle