Wie gesehen wird SSH extrem oft genutzt, und es kann lästig sein, beim Verbindungsaufbau immer wieder das Passwort einzutippen. Ein weiterer Grund, kein Passwort eingeben zu wollen: wenn man eine SSH-Verbindung aus einem Shell-Skript heraus nutzt (ich mache das z. B., um Informationen zum Backup-Stand meiner Dateien zu sammeln).
Zwei Rechner miteinander bekannt zu machen ist recht einfach. Ich habe hier eine gute Anleitung gefunden, das Beispiel unten stammt von dort. Angenommen, du möchtest als Benutzer „a“ auf Rechner „A“ (A ist dann meist eine IP wie 192.168.1.100 oder eine Adresse wie „myserver.danielfischer.name“) einen Benutzer „b“ (auf dem entfernten Rechner kannst du einen anderen Anmeldenamen haben, also a!=b) auf Rechner „B“ hinterlegen (auch hier ist „B“ entweder eine IP oder eine Adresse).
Melde dich zuerst auf A als Benutzer a an und erzeuge ein Schlüsselpaar zur Authentifizierung. Gib dabei keine Passphrase ein:
a@A:~> ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/a/.ssh/id_rsa): Created directory '/home/a/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/a/.ssh/id_rsa. Your public key has been saved in /home/a/.ssh/id_rsa.pub. The key fingerprint is: 3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A
Lege dann per ssh als Benutzer b auf B ein Verzeichnis ~/.ssh an, im Home-Verzeichnis von „b“, daher das „~“. (Das Verzeichnis existiert vielleicht schon, das ist in Ordnung):
a@A:~> ssh b@B mkdir -p .ssh b@B's password:
Zum Schluss den neuen öffentlichen Schlüssel von a an b@B:.ssh/authorized_keys anhängen und ein letztes Mal das Passwort von b eingeben:
a@A:~> cat ~/.ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys' b@B's password:
Mehr braucht es nicht, um sich von „A“ als „a“ ohne Passwort auf „B“ als „b“ anzumelden:
a@A:~> ssh b@B