
Ich habe eine ganze Reihe von Tutorials zum Verbinden zweier Computer über SSH gefunden, aber ich glaube, ich verstehe den Kernpunkt nicht. (Ich habe zum Beispiel versuchtDieses hieroderDieses hier)
Angenommen, ich bin BenutzerA mit IPv4 xxx.xxx.x.xx und möchte eine SSH-Verbindung mit meinem Freund (in einem anderen Land) BenutzerB mit IPv4 yyy.yyy.y.yy herstellen.
Also generiere ich einen SSH-Schlüssel und habe eine schöne ./ssh/id_rsa und ./ssh/id_rsa.pub und jetzt soll ich sie auf den Computer meines Freundes kopieren?
Aber wie man vermuten könnte,
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
funktioniert nicht (wie könnte es, da wir noch nicht gebunden sind?)
Muss Benutzer B diese Datei manuell in seine eigene .ssh-Datei kopieren?
Und dann auf meinem Computer
wird direkt funktionieren? (was höchst unrealistisch ist, glaube ich ...)
Tut mir leid, dass ich so dumm bin, aber für mich sieht es so aus, als würden die Leute im Tutorial mit demselben Computer arbeiten ...
Antwort1
Also generiere ich einen SSH-Schlüssel und habe eine schöne ./ssh/id_rsa und ./ssh/id_rsa.pub und jetzt soll ich sie auf den Computer meines Freundes kopieren?
Ja, insbesondere sollen Sie Ihre Datei (den öffentlichen Schlüssel) in die Datei des Remote-Systems kopieren .~/.ssh/id_rsa.pub
~/.ssh/authorized_keys
(Obwohl Sie wirklichdein eigenesBenutzerkonto auf dem Zielcomputer, anstatt das „BenutzerB“-Konto Ihres Freundes freizugeben.)
[ssh-copy-id] funktioniert nicht (wie könnte es, da wir noch nicht gebunden sind?)
Normalerweise würde es funktionieren, indemEingabe eines Passwortesum sich beim Remote-System anzumelden. (SSH verwendet dieselben „System“-Konten und Passwörter wie lokale Anmeldungen.)
Das Besondere an SSH ist, dass der Client zwischen mehreren Anmeldemethoden wählen kann. Es ist nicht wirklichnurSchlüsselpaarbasiert. (So ähnlich wie eine Website Ihnen die Anmeldung mit Passwort, mit Google, mit einem USB-Token usw. ermöglichen kann.)
Natürlich, wenn das Remote-System bereits über passwortbasierte Logins verfügtdeaktiviert(was heutzutage zu einer Art Notwendigkeit geworden ist), dann kann ssh-copy-id tatsächlich nicht aus dem Nichts funktionieren und Sie müssen Ihren öffentlichen Schlüssel auf andere Weise in die Datei „authorized_keys“ des Servers kopieren.
Glücklicherweise ist der öffentliche Schlüssel nur eine lange Textzeile, sodass Sie ihn per E-Mail oder Discord oder was auch immer einfügen können. (Und obwohl RSA-Schlüssel lang sind, ssh-keygen -t ed25519
wird einvielkürzere id_ed25519.pub, die im Notfall sogar auf Papier geschrieben werden kann.)
(Auch in diesen Situationen kann ssh-copy-id immer nochtechnischnützlich, wenn Sie bereits ein funktionierendes Schlüsselpaar haben und es verwenden möchten, um ein weiteres zu registrieren. Eine dritte Alternative wären Kerberos-basierte Anmeldungen, die hauptsächlich in Unternehmens-/Hobbyumgebungen zu finden sind.)
Und wird es dann direkt auf meinem Computer funktionieren? (was höchst unrealistisch ist, glaube ich ...)
ssh [email protected]
Insbesondere der SSH-Teil würde funktionieren, ja.
Beachten Sie jedoch, dass SSH nicht auf magische Weise durch NATs geht und nicht automatisch eine „Portweiterleitung“ für Sie einrichtet. Wenn dies also für den Zugriff auf den Heimcomputer Ihres Freundes erforderlich ist, muss dies separat erfolgen. (SSH verwendet TCP-Port 22.) Ebenso ist bei einer Firewall eine Regel erforderlich, um SSH zuzulassen.
AlsoDasmuss behandelt werden, bevor ssh y.y.y.y
es funktioniert.
(Die meisten SSH-Tutorials behandeln Home-NAT nicht, da es sich um eine sehr allgemeine Angelegenheit handelt und nicht unbedingt Teil der SSH-Einrichtung ist. Es wird einfach davon ausgegangen, dass jemand, der Verbindungen zum Heimnetzwerk über IPv4 zulassen möchte, bereits weiß, was Portweiterleitung ist und wie sie konfiguriert werden muss – es macht keinen Unterschied, ob man es für SSH oder Minecraft oder BitTorrent oder was auch immer macht.
Außerdem richten sich viele SSH-Tutorials eher an Entwickler und allgemein an Leute, die eine Verbindung zu einem VPS herstellen möchten, der über eine eigene öffentliche IPv4-Adresse verfügt. Das ist etwas anders, als wenn Sie versuchen, eine Verbindung zum PC eines Freundes herzustellen.)
Antwort2
Damit die Authentifizierung mit öffentlichem Schlüssel funktioniert, id_rsa.pub
muss Ihr öffentlicher Schlüssel ( ) für den Zielbenutzer angehängt werden ~/.ssh/authorized_keys
. Wie Sie ihn dorthin bringen, geht SSH nichts an – Sie müssen es selbst herausfinden. Sie können jedes beliebige Medium verwenden, solange es Integrität garantiert (d. h. der Empfänger kann bestätigen, dass das, was er erhalten hat, das ist, was Sie gesendet haben). Es muss nicht vertraulich sein, denn es ist IhröffentlichSchlüssel. Der private Schlüssel ( id_rsa
) bleibt auf Ihrem Computer.
Was ist der Sinn ssh-copy-id
davon? Es gibt zwei Anwendungsfälle:
Die Kennwortauthentifizierung ist aktiviert und Sie möchten die Authentifizierung mit öffentlichem Schlüssel aktivieren. In diesem Fall müssen Sie das Kennwort eingeben, um eine Verbindung mit Host B herzustellen, und
ssh-copy-id
den öffentlichen Schlüssel anhängenauthorized_hosts
.Die Authentifizierung mit öffentlichem Schlüssel ist bereits eingerichtet, aber Sie möchten einen weiteren Schlüssel hinzufügen, beispielsweise mit einer stärkeren oder anderen Kryptografie. Insbesondere möchten Sie möglicherweise einen Schlüssel hinzufügen, der weder Ihnen noch Ihrem aktuellen Host gehört. In diesem Fall müssen Sie die Schlüsseldatei mit der
-i
Option angeben. (Standardmäßig werden alle vonssh-add -L
oder bereitgestellten Schlüssel hinzugefügtid_rsa.pub
, wenn keine vorhanden sind.)
Warum sollten Sie die Authentifizierung mit öffentlichem Schlüssel verwenden, wenn Sie möglicherweise bereits eine Kennwortauthentifizierung eingerichtet haben? Weil sie unmöglich zu erraten ist und keine Benutzerinteraktion erfordert.