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.