ssh-copy-id aber umgekehrt

ssh-copy-id aber umgekehrt

Ich verstehe, wie ich meinen öffentlichen SSH-Schlüssel in die autorisierten Schlüssel eines anderen Computers einfügen kann, vorausgesetzt, ssh-copy-idich verfüge über den Benutzernamen und das Passwort des Remote-Computers.

Wie ist der umgekehrte Weg möglich? Ich hole mir den öffentlichen Schlüssel eines Remote-Rechners (da er öffentlich ist, ist kein Passwort erforderlich) und füge ihn in meine eigenen autorisierten Schlüssel ein (auch hier ist kein Passwort erforderlich, da es meiner ist).

Antwort1

ssh ${remote_host} cat .ssh/id_rsa.pub | tee -a $HOME/.ssh/authorized_keys

Antwort2

Sie verwechseln hier zwei verschiedene Arten von SSH-Schlüsseln. Obwohl sie eine ähnliche Struktur haben, haben sie einen ganz unterschiedlichen Zweck.

Ihr öffentlicher Schlüssel ist sozusagen einBenutzerschlüssel: obwohl esöffentlich, d. h. es besteht keine Notwendigkeit, es geheim zu halten, es ist nichtveröffentlichtautomatisch auf jeden Fall. Wenn Sie es auf Ihre Webseite stellen möchten, können Sie das natürlich tun. Aber Sie müssen es selbst tun.

Die maschinenspezifischen Schlüssel heißen dagegenHostschlüssel. Diese werden beim Login automatisch ausgetauscht, so dass sie berücksichtigt werden könnenveröffentlicht. Aber Hostschlüssel werden nicht in eine authorized_keysDatei geschrieben, sondern in known_hosts. Nur den Hostschlüssel einer Maschine zu haben, gibt niemandem Zugriff: Es lässt Ihren SSH-Client nur bestätigen, dass die Maschine dieselbe ist wie vorher, wenn Sie sich mit ihr verbinden.

Wenn der Systemadministrator sich für die Aktivierung HostbasedAuthenticationin entscheidet /etc/ssh/sshd_configund der Hostschlüssel des Remote-Hosts in einer systemweiten /etc/ssh/ssh_known_hostsDatei steht, dann wäre es möglich, den Namen des Remote-Hosts hinzuzufügen /etc/hosts.equivoder /etc/ssh/shosts.equivzuzulassenalleauf diesem Remote-Host, um sich bei entsprechenden Konten auf dem lokalen Host anzumelden, ohne ein Passwort einzugeben. Wenn der Systemadministrator auch IgnoreRhostsauf setzt no, können Sie als normaler Benutzer einem bestimmten Benutzer auf einem bestimmten Remote-Host auf ähnliche Weise erlauben, ohne Passwort auf Ihr Konto auf dem lokalen Host zuzugreifen, indem Sie den Hostschlüssel des Remote-Hosts in Ihre ~/.ssh/known_hostsund den Benutzernamen@Hostnamen in Ihre ~/.rhostsoder eingeben ~/.shosts. Diese Authentifizierungsmethode ist jedoch standardmäßig deaktiviert.

(Warum zwei Dateien wie ~/.shostsund ~/.rhosts, fragen Sie sich? Das liegt daran, dass die .rhostsDatei von den alten, nicht verschlüsselten rsh/ rlogin/ rexec/ rcp-Tools verwendet wurde und SSH ursprünglich als Drop-In-Ersatz dafür entwickelt wurde. Sie würden .rhostsoder verwenden, wenn Sie den Zugriff sowohl über als auch über die Tools hosts.equiverlauben möchten , und oder wenn Sie nur SSH-Zugriff erlauben möchten.)rshssh.shostsshosts.equiv

Antwort3

Mithilfe von ssh-keyscan oder automatisch bei der Verbindung mit einem unbekannten Host, der den Schlüssel für Sie zu known_hosts hinzufügt. Wenn Sie es manuell tun möchten, können Sie den folgenden Befehl verwenden:

ssh-keyscan hostname >> ~/.ssh/known_hosts

verwandte Informationen