SSH ohne Passwort

Wenn man mal schnell mal per SSH auf einen anderen Host zugreifen will oder per scp eine Datei kopieren möchte, fragt der Zielhost normalerweise nach einen Passwort. Bei einer einmaligen Aktion nicht weiter tragisch, aber wenn man regelmäßig per SSH zugreifen will, ist die Passworteingabe irgendwann nervig. Und auch in Skripten ist es nicht unbedingt schön ein Kennwort zu hinterlegen, was dann im Zweifelsfall geändert wird und niemand denkt daran es auch im Skript zu aktualisieren.

Gelöst werden kann das Dilemma recht einfach durch Key-Authentifizierung.

Zuhause erstelle ich per cronjob als User root ein Backup, welches ich aus Platz- und Sicherheitsgründen anschließend per scp auf einen anderen Rechner kopiere. Auf dem Zielrechner soll es als User backup geschrieben werden, da dieser die entsprechenden Verzeichnisrechte hat.

Zunächst erzeugen wir auf dem Ausgangsrechner als User ein Schlüsselpaar:

ssh-keygen -t rsa

Hierdurch wird im Unterverzeichnis .ssh des Home-Verzeichnis ein Schlüsselpaar generiert, den öffentlichen Teil kopieren wir nun in das .ssh-Verzeichnis des gewünschten Users (in meinem Fall backup) auf dem Zielsystem:

ssh-copy-id -i ~/.ssh/id_rsa.pub backup@zielrechner

Hierbei wird man jetzt zum letzten Mal nach dem Passwort des Backup-Nutzers gefragt, anschließend geht z.B. ein

scp /opt/backup/SqlBackup-Donnerstag.tar.gz backup@zielrechner:/home/sicherung/sql/

ohne Passwortabfrage.