Ich verstehe, wie ich meinen öffentlichen SSH-Schlüssel in die autorisierten Schlüssel eines anderen Computers einfügen kann, vorausgesetzt, ssh-copy-id
ich 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_keys
Datei 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 HostbasedAuthentication
in entscheidet /etc/ssh/sshd_config
und der Hostschlüssel des Remote-Hosts in einer systemweiten /etc/ssh/ssh_known_hosts
Datei steht, dann wäre es möglich, den Namen des Remote-Hosts hinzuzufügen /etc/hosts.equiv
oder /etc/ssh/shosts.equiv
zuzulassenalleauf diesem Remote-Host, um sich bei entsprechenden Konten auf dem lokalen Host anzumelden, ohne ein Passwort einzugeben. Wenn der Systemadministrator auch IgnoreRhosts
auf 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_hosts
und den Benutzernamen@Hostnamen in Ihre ~/.rhosts
oder eingeben ~/.shosts
. Diese Authentifizierungsmethode ist jedoch standardmäßig deaktiviert.
(Warum zwei Dateien wie ~/.shosts
und ~/.rhosts
, fragen Sie sich? Das liegt daran, dass die .rhosts
Datei 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 .rhosts
oder verwenden, wenn Sie den Zugriff sowohl über als auch über die Tools hosts.equiv
erlauben möchten , und oder wenn Sie nur SSH-Zugriff erlauben möchten.)rsh
ssh
.shosts
shosts.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