Automatischer Login / Backup über SSH

Gepostet von am Jan 31, 2009 in Anleitung, Bash, Programmierung | Keine Kommentare

Hier nun ein­mal eine Kurz­an­lei­tung wie man einen auto­ma­ti­schen Login über SSH rea­li­siert um ggf. Back­ups auf einem sepe­ra­tem Ser­ver zu sichern. Diese Anlei­tung funk­tio­niert sowohl über Debian als auch über Ubuntu. Diese zwei Betriebsys­teme wer­den des­halb genannt, da sie über die ein­fa­che Paket­ver­wal­tung verfügen.

Als ers­tes benö­tigt man auf bei­den Ser­vern den SSH-Client1 und natür­lich die Mög­lich­keit der Ver­schlüs­se­lung über SSL2.

aptitude -y install ssh openssl ssl-cert

Eigent­lich ist stan­dard­mä­ßig ein SSH-Client auf einem Root- oder V-Server instal­liert. Sollte es bei der Anwei­sung ssh zu einem Warn­hin­weis kom­men, das dies bereits instal­liert ist, kann die­ser igno­riert wer­den. Ana­log dazu die Anwei­sun­gen openssl und ssl-cert, die für die Erstel­lung von Zer­ti­fi­ka­ten nötig sind.

adduser backupuser

Mit dem Befehl addu­ser, der aus dem Bereich Debian / Ubuntu kommt, legt man sich ein­fachs­hal­ber auf bei­den Ser­vern den glei­chen Benut­zer an, der für die Kom­mu­ni­ka­tion zustän­dig sein wird. Im all­ge­mei­nen Linuxbe­reich heisst die­ser Befehl use­r­add. Bei genann­ten Befehl wird auto­am­tisch ein Benut­zer­ver­zeich­nis und die benö­tig­ten Zugriffs­rechte gesetzt. Mit passwd back­u­pu­ser lässt sich das Pass­wort setz­ten, falls nicht schon bei addu­ser geschehen.

[Ser­ver A] => Hier wer­den Back­ups erstellt die auf einen ande­ren Ser­ver, über SSH, ver­scho­ben wer­den sol­len.
[Ser­ver B] => Stellt die Mög­lich­keit bereit, sich ohne Pass­wort aber über SSL zu verbinden.

Es geht nun also auf Ser­ver A los. Als ers­tes mel­det man sich mit dem User back­u­pu­ser an und erstellt im Hom­ver­zeich­nis ein „.ssh” Ver­zeich­nis. Betritt es und erstellt darin einen Public- und Private-Key. Bei der Abfrage des gewünsch­ten Datei­na­men gibt man ssh.key ein. bei der Pass­wort­ab­frage ein­fach mit [ENTER] bestä­ti­gen und kein Pass­wort eintragen.

mkdir ~/.ssh
cd ~/.ssh
ssh-keygen -b 2048 -t rsa

Hier­bei erhält man nun fol­gende zwei Dateien: id_dsa und id_dsa.pub. Dabei han­delt es sich um den genann­ten Private- und Public-Key. Die Datei ssh.key.pub wird nun auf Ser­ver B kopiert. Der Ort sollte optio­nal das Home­ver­zeich­nis des zuvor erstell­ten Benut­zers sein.

cat ssh.key.pub >> ~/.ssh/authorized_keys

Mit dem letz­ten Schritt fügt man den Public-Key zu den aut­ho­ri­zed keys, des aktu­el­len Benut­zers hinzu. Sollte es hier­bei zu einem Feh­ler kom­men, ist wohl­mög­lich noch kein .ssh - Ver­zeich­nis vor­han­den. Dem­nach noch fol­gende Ope­ra­tio­nen durch­füh­ren und den letz­ten Schritt wiederholen.

mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys

Hier­bei wird das besagte Ver­zeich­nis und eine Datei mit dem Namen authorized_keys erstellt. Für einen nicht-öffentlichen Zugriff auf diese Datei sorgt der letzte Befehl.

Hat man dies erle­digt lässt sich mit fol­gen­dem Befehl eine Datei vom Home­ver­zeich­nis Ser­ver A auf das Home­ver­zeich­nis Ser­ver B kopie­ren ohne eine Pass­wort­ab­frage zu erhal­ten. Dabei beziehe ich mich auf den erstell­ten back­u­pu­ser und nenne Ser­ver B im fol­gen­dem Bei­spiel serv. Die backup.tgz steht für ein bei­spiel­haf­tes Backup. (Die Datei ssh.key wurde zuvor mit oben beschrie­be­nen Schritt erstellt)

scp -i ~/.ssh/ssh.key ~/backup.tgz backupuser@serv:backup.tgz

Es ist zu beach­ten, das der Ziel­pfad, das Home­ver­zeich­nis von back­u­pu­ser ist. Nach dem Dop­pel­punkt darf kein / (Slash) folgen!

Ich hoffe diese Anlei­tung bringt eini­gen etwas licht ins dunkle. Per­sön­lich habe ich immer einen gro­ßen Bogen um diese The­ma­tik gemacht. Wie man aber sieht, ist es gar nicht so schwer. Viel Erfolg beim ausprobieren.

  1. http://de.wikipedia.org/wiki/Ssh []
  2. http://de.wikipedia.org/wiki/Transport_Layer_Security []

Einen Kommentar schreiben