Dieser Beitrag wurde am 10.08.2026 aktualisiert und auf den Stand der Technik gebracht.
Hin- und wieder ist es sinnvoll oder zumindest praktisch, wenn ein Rechner auf den anderen automatisch ohne Benutzerinteraktion via SSH zugreifen kann, z. B.: um mithilfe von Rsync Daten zu Backupzwecken synchron zu halten oder einfach weil man von seinem verschlüsselten Rechner schnell auf andere System springen will.
Auch wenn es sehr verführerisch erscheint, sollte man unter keinen Umständen root-zu-root Vertrauen zwischen 2 Rechnern aufbauen, denn wird einer kompromittiert, hat der Angreifer automatisch auch Zugriffsrechte auf den anderen Host und somit Zugriff auf z. B. den Backupdatenbestand, was dann wiederum für den Angreifer sehr verführerisch ist
Vorbereitungs des lokalen Systems
Ich gehe in diesem Kurztutorial davon aus, dass auf beiden Seiten OpenSSH benutzt wird, wie ihn die meisten Linux-Derivate standardmäßig mitliefern. Heute sollte man nur noch SSH2 mit starken Ciphern und sicheren Schlüsseln verwenden. Das .ssh Verzeichnis befindet sich normalerweise bereits im Home-Verzeichnis jedes Users. Ist dies nicht der Fall erstellen wir es händisch. Allerdings geht es schneller, wenn man einfach localhost mal ansteuert. Dann erstellt der SSH-Client das Verzeichnis mit den richtigen Rechten selbstständig:
client$ ssh localhost
The authenticity of host 'localhost (::1)' can't be established.
ED25519 key fingerprint is SHA256:tFrKvg+TzMvYQUdK7Ol08tAOuDGC/cl7FZhFrNfc6/c.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'localhost' (ED25519) to the list of known hosts.
mscholz@localhost's password: ^CCode-Sprache: PHP (php)Dabei müssen wir die Anmeldung gar nicht erfolgreich durchführen, und können bei der Passwortabfrage direkt mit Strg+C abbrechen.
Anderenfalls erstellt man das Verzeichnis lokal eben selbst:
client$ mkdir ~/.ssh
client$ chmod 700 ~/.sshSSH-Key erstellen
Der private Key kann selbstverständlich auch zusätzlich noch mit einer Passphrase geschützt werden, was wir hier aber nicht machen wollen, da der Rechner ja automatisch (via Script etc.) Zugriff erlangen soll. Somit lassen wir das Feld bei der Eingabe einfach leer.
client$ ssh-keygen -t ed25519
Enter passphrase (empty for no passphrase):
Enter same passphrase again:Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/mscholz/.ssh/id_ed25519):
Enter passphrase for "/home/mscholz/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mscholz/.ssh/id_ed25519
Your public key has been saved in /home/mscholz/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:mvlorEW749rLt+dznYeBLaft4H88fzJVfmBaUCaI3sE mscholz@picon
The key's randomart image is:
+--[ED25519 256]--+
| o ...o |
| . E .o |
| . . . . |
| . . + .|
| . S * o.|
| . = + + +|
| .* .* *.|
| +++. o.o.B.=|
| o=B+o+.o.oo==|
+----[SHA256]-----+
SSH-Key auf das Zielsystem kopieren
Damit wäre die Key-Erstellung soweit fertig und es sind die beiden Dateien id_ed25519 und id_ed25519.pub entstanden. Jetzt kopieren wir den Public Key (.pub) auf das Zielsystem. Dieser ist öffentlich und enthält keine geheimen Daten, dennoch verwende ich SSH für die Übertragung.
Praktisch ist auch das Tool ssh-copy-id, welches die Kopiererei und das Erstellen von Zielverzeichnis und authorized_keys selbst erledigt:
client$ ssh-copy-id mscholz@Apollo.local 1 ↵ 163 18:02:11
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/mscholz/.ssh/id_ed25519.pub"
The authenticity of host 'apollo.local (192.168.122.65)' can't be established.
ED25519 key fingerprint is SHA256:kFj0OuEjwEKev/eiVgC/WnEgSuuKY1u4SpxRStqUcIg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
mscholz@apollo.local's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'mscholz@Apollo.local'"
and check to make sure that only the key(s) you wanted were added.
Code-Sprache: PHP (php)Alternativ kann man auf dem Zielsystem den Inhalt der Datei id_ed25519.pub händisch nach ~/.ssh/authorized_keys kopieren. Dabei jeden Schlüssel in eine eigene Zeile:
server$ mkdir ~/.ssh
server$ chmod 700 ~/.ssh
server$ cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys
server$ chmod 600 ~/.ssh/authorized_keys
server$ rm ~/id_ed25519.pub
Auch hierbei wieder auf alleinige Leserechte für den bestimmten User achten, danach, kann man id_ed25519.pub wieder löschen.
Für etwas mehr pseudo-Sicherheit, kann man vor den Schlüssel in der authorized_keys Datei noch angeben, von wo man sich hiermit verbinden darf:
from="*.example.org"
In der from= Zeile darf man eine IP-Adresse oder einen Hostnamen angegeben. Wildcards werden ebenfalls ausgewertet.

[…] ist ein sehr guter Moment, seine SSH Pubkeys auf das Gerät zu kopieren und ggf. das Benutzerpasswort wieder zu […]
hehe, wieder was dazu gelernt
Hatte als Infoquelle jedenfalls nicht die MAN Page, sondern diverse Internetseiten zu Rate gezogen
man ssh-copy-id