23/09/2017
Automatischer Login via SSH & SCP
Manchmal müssen Daten automatisiert zwischen zwei Linux Server via SCP über eine gesichterte Verbindung übertragen werden. Linux bringt alle notwendigen Bordmittel dafür mit. Gerade die Übertragung via SCP bietet sich dann an, wenn große Datenmengen kopiert werden müssen und man die Gefahr umgehen will, dass gepackte Archive bspw. via FTP defekt übertragen werden.
Was muss dafür getan werden?
An zwei Stellen müssen dazu Einstellungen vorgenommen werden. (1) Auf Serverseite und (2) auf Clientseite.
(1) … auf Serverseite
Zunächst muss ein Schlüsselpaar erzeugt werden. Dies kann direkt am Server mit dem Befehl ssh-keygen erfolgen. Es bietet sich an zwei Varianten zu erstellen:
ssh-keygen -t rsa ssh-keygen -t dsa
(Um später einen automatischen Login zu ermöglichen darf keine zusätzlich Passphrase erstellt werden!)
Damit erhält man im root Verzeichnis unter dem Unterverzeichnis .ssh vier zusätzliche Dateien. Die Datei known_hosts ist in der Regel bereits vorhanden.
id_dsa.pub id_dsa id_rsa.pub id_rsa known_hosts
Die Öffentlichen Schlüssel *.pub müssen in eine Datei authorized_key kopiert werden:
cat *.pub >> authorized_keys
Im Anschluss können alle Dateien, ausgehend von dem Quellrechner (deinhost.de) auf den Zielrechner via SCP übertragen werden. Soll ein anderer Port des Quellrechners angebeben werden erfolgt das mit der Option -P (z.B. -P123456)
scp -rp root@deinhost.de:~/.ssh/* ~/.ssh
Auf Serverseite sollten nach dem kopieren die Dateien id_dsa und id_rsa gelöscht werden. Eventuell ist eine known_hosts Datei vorhanden, diese kann an dieser Stelle leer sein. Abschließend sollten die verbleibenden Dateien dringend nur für root lesbar gemacht werden. (Mit chmod 0640 oder besser chmod 0600)
(2) … auf Clientseite
Auf Clientseite stehen uns jetzt dieselben Dateien zur Verfügung.
id_dsa.pub id_dsa id_rsa.pub id_rsa known_hosts
Diese können an der Stelle verbleiben und sollten nur dahingehend verändert werden, dass nur root sie lesen kann. Also auch hier mit chmod 0640 oder besser 0600.
Bei manchen Systemen wird chmod 0600 gefordert für den späteren, automatischen Login.
Test
Ob alles funktioniert muss man zunächst manuell über die Konsole versuchen, indem man ein paar Dateien via SCP kopiert. Hierbei wird auch der Zielhost in die known_hosts Datei eingetragen.
scp -rp root@deinhost.de:/var/www/* /deinClientZielverzeichnis/
Bei diesem Test kommt die Abfrage, ob dem Zielhost vertraut werden soll. Bestätigt man mit „yes“, wird der Host automatisch in die Datei known_hosts eingetragen und kann dort verbleiben.
Ab jetzt kann SCP oder SSH auch automatisiert genutzt werden, etwa über CronJobs oder anderen Scripten.
Du willst diese Seite unterstützen?
Vielen Dank, dass du diesen Blog liest. Wenn dir dieser Beitrag geholfen hat und du diese Seite unterstützen willst, kannst du es hier tun.
Vielen Dank.