SSH Zugang über cronjob steuern
SSH Zugang über cronjob steuern
Hallo,
Mein Problem:
Wie kann ich einen SSH-Zugang über einen Cronjob für eine gewisse Zeit freischalten?
Szenario:
Ich möchte ein Backup von Server 1 über eine SSH-Verbindung automatisch auf Server 2 sichern. Auf Server 1 ist ein User eingerichtet, der ein SSH-Login über dsa-Key erlaubt. Server 2 holt die Backup-Files über ein Cronjob-Script ab (rsync).
Das ganze funktioniert problemlos.
Nun wollte ich den SSH-Zugang von Server 1 nur für eine gewisse Zeit freigeben. Also habe ich auf Server 1 zwei weitere Cronjob's eingerichtet:
6:00 Uhr : usermod -s /bin/bash backupuser
6:30 Uhr : usermod -s /bin/false backupuser
Um 6:15 Uhr versucht Server 2 die Verbindung herzustellen:
rsync -e ssh -avzn Server1:/backupdir /backupdir
Es werden keine Dateien übertragen. rsync liefert keine Ausgabe.
Beide Server-Uhren laufen nahezu synchron.
Hat jemand eine Idee?
Gruß,
Andreas
Mein Problem:
Wie kann ich einen SSH-Zugang über einen Cronjob für eine gewisse Zeit freischalten?
Szenario:
Ich möchte ein Backup von Server 1 über eine SSH-Verbindung automatisch auf Server 2 sichern. Auf Server 1 ist ein User eingerichtet, der ein SSH-Login über dsa-Key erlaubt. Server 2 holt die Backup-Files über ein Cronjob-Script ab (rsync).
Das ganze funktioniert problemlos.
Nun wollte ich den SSH-Zugang von Server 1 nur für eine gewisse Zeit freigeben. Also habe ich auf Server 1 zwei weitere Cronjob's eingerichtet:
6:00 Uhr : usermod -s /bin/bash backupuser
6:30 Uhr : usermod -s /bin/false backupuser
Um 6:15 Uhr versucht Server 2 die Verbindung herzustellen:
rsync -e ssh -avzn Server1:/backupdir /backupdir
Es werden keine Dateien übertragen. rsync liefert keine Ausgabe.
Beide Server-Uhren laufen nahezu synchron.
Hat jemand eine Idee?
Gruß,
Andreas
Re: SSH Zugang über cronjob steuern
Hmm, ich hab das selbst ja auch noch nicht eingerichtet (bin gerade noch bei der Planung) aber sowohl in der FAQ http://www.rootforum.org/faq/index.php? ... 26&lang=de als auch auf der rsync-Homepage sieht der rsync-Aufruf anders aus. Da sind noch zwei :: hinter der IP vom rsync-Server. Schau doch einfach mal auf http://samba.anu.edu.au/rsync/examples.html.
Vielleicht hilfts ja.
Andreas
Vielleicht hilfts ja.
Andreas
Re: SSH Zugang über cronjob steuern
Hallo Andreas,
Das Backup-Script (rsync) funktioniert problemlos, wenn die Shell vom Backup-User (Server 1) auf /bin/bash steht.
Ich glaube, das Problem liegt beim Umschalten der Shell (usermod -s). Von der Konsole klappt es. Bei einem Aufruf vom Cronjob gehts nicht.
Das Backup-Script (rsync) funktioniert problemlos, wenn die Shell vom Backup-User (Server 1) auf /bin/bash steht.
Ich glaube, das Problem liegt beim Umschalten der Shell (usermod -s). Von der Konsole klappt es. Bei einem Aufruf vom Cronjob gehts nicht.
Re: SSH Zugang über cronjob steuern
gib doch mal im cron - job den absoluten pfad
zu dem usermod binary an ...
zu dem usermod binary an ...
Re: SSH Zugang über cronjob steuern
Ne ganz dumme frage, die Cronjobs werden von root ausgerführt??
Re: SSH Zugang über cronjob steuern
Im cronjob rufe ich ein Script auf, dass die Shell umschaltet und die Berechtigung der Backup-Files von root nach User ändert (bzw. umgekehrt).gib doch mal im cron - job den absoluten pfad
zu dem usermod binary an ...
Ich leite die Ausgabe per Mail an mich weiter. Das usermod binary gibt keine Meldung aus (müsste ansonsten meckern).
Zu Testzwecken habe ich noch ein paar echo's eingebaut, die allesamt mit der Mail ankommen.
So ist es! Das Umschalten der Shell läuft über einen Root-cronjob.Ne ganz dumme frage, die Cronjobs werden von root ausgerführt??
Das Backup von Server 2 wird von einem User-cronjob gestartet, da der dsa-Key für das automatische SSH-Login vom User erstellt wurde.
Re: SSH Zugang über cronjob steuern
Kann es sein das bei dir ein Parameter fehlt?
Muss es nicht heissen:
usermod -s -d/bin/bash backupuser
??
Gruss
Ralf
Muss es nicht heissen:
usermod -s -d/bin/bash backupuser
??
Gruss
Ralf
Re: SSH Zugang über cronjob steuern
Hi Ralf,
Was ich nicht versteh, ist die Tatsache dass rsync keine Meldung ausgibt, wenn die Shell über den Cronjob umgeschaltet wird.
Ich habe mal folgendes gemacht:
1. Auf Server 1 als root eingelogt und mein Script zum Abschalten der Shell aufgerufen (das gleiche ruft der cronjob auf).
2. Auf Server 2 als user eingelogt und das backup-script aufgerufen:
-> rsync meldet Verbindungsfehler.
3. Auf Server 1 als root eingelogt und mein Script zum Einschalten der Shell aufgerufen (das gleiche ruft der cronjob auf).
4. Auf Server 2 als user eingelogt und das backup-script aufgerufen:
-> Backup läuft einwandfrei durch
Wenn das Ein- und Ausschalten der Shell vom cron abläuft, bekomme ich folgende Ausgabe:
Keine Fehlermeldung, kein Hinweis, keine Information.
Da frag ich mich, was der cronjob da anders macht :?:
Gruss,
Andreas
Laut man-page setzt -d das Login-Directory. Ich möchte aber mit -s die Login-Shell umsetzen.Muss es nicht heissen:
usermod -s -d/bin/bash backupuser
Was ich nicht versteh, ist die Tatsache dass rsync keine Meldung ausgibt, wenn die Shell über den Cronjob umgeschaltet wird.
Ich habe mal folgendes gemacht:
1. Auf Server 1 als root eingelogt und mein Script zum Abschalten der Shell aufgerufen (das gleiche ruft der cronjob auf).
2. Auf Server 2 als user eingelogt und das backup-script aufgerufen:
Code: Select all
--- Backup-Sync -------------------------------
rsync: connection unexpectedly closed (0 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
-----------------------------------------------
3. Auf Server 1 als root eingelogt und mein Script zum Einschalten der Shell aufgerufen (das gleiche ruft der cronjob auf).
4. Auf Server 2 als user eingelogt und das backup-script aufgerufen:
Code: Select all
--- Backup-Sync -------------------------------
receiving file list ... done
abc/
abc/2003-12-10/
abc/2003-12-10/backup.tgz
wrote 32 bytes read 4526848 bytes 3017920.00 bytes/sec
total size is 122049256 speedup is 26.96
-----------------------------------------------
Wenn das Ein- und Ausschalten der Shell vom cron abläuft, bekomme ich folgende Ausgabe:
Code: Select all
--- Backup-Sync -------------------------------
-----------------------------------------------
Da frag ich mich, was der cronjob da anders macht :?:
Gruss,
Andreas
-
- Userprojekt
- Posts: 7066
- Joined: 2002-10-09 14:30
- Location: Dorsten
- Contact:
Re: SSH Zugang über cronjob steuern
Wie wär's denn, wenn du einfach mal das komplette Script hier posten würdest?
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
Re: SSH Zugang über cronjob steuern
Gute Idee!Wie wär's denn, wenn du einfach mal das komplette Script hier posten würdest?
Also, hier das Script (/scripts/enablesync.sh) mit dem ich auf Server 1 die Shell für den backupuser ein-/ausschalte sowie die Rechte im Backup-Verzeichnis setze:
Code: Select all
#!/bin/sh
# Parameter-Check
if [ $# -ne 1 ] ; then
echo "-> Syntax: enablesync <ON/OFF>"
exit 1
fi
case $1 in
ON) usermod -s /bin/bash backupuser
chown backupuser:users -R /abc
echo "Sync: Enable (shell)" ;;
OFF) usermod -s /bin/false backupuser
chown root:root -R /abc
echo "Sync: Disable (no shell)" ;;
*) echo "Parameter $1 not supported";;
esac
Das Script wird von einem root-cronjob aufgerufen und die Ausgabe per Mail an mich geschickt.
Code: Select all
00 6 * * * /scripts/enablesync.sh ON | mail -s "Sync-Enable" me@mymail.de
30 6 * * * /scripts/enablesync.sh OFF | mail -s "Sync-Disable" me@mymail.de
Code: Select all
crontab -e
-
- Posts: 553
- Joined: 2002-10-05 16:39
- Location: D'dorf
- Contact:
Re: SSH Zugang über cronjob steuern
Verwende mal den absoluten Pfad zu usermod. /bin/sh sollte bei dir ein Link zur Bash sein.. das ist normal und üblich in Shellscripts ;)
Re: SSH Zugang über cronjob steuern
Vielen Dank an DarkSpirit und Cye. Das war's anscheinend.Verwende mal den absoluten Pfad zu usermod.
Trotzdem ist mir immer noch nicht ganz klar, warum das Script aus der Shell einwandfrei funktioniert
und über den cron ohne Fehlermeldung die Arbeit verweigert.
Schätze, ich werde mich mal etwas mehr mit dem cron beschäftigen.
Vielen Dank an alle,
Andreas
Re: SSH Zugang über cronjob steuern
Das liegt daran, dass CRON eine andere Shellumgebung verwendet, in der die Pfade nicht gesetzt sind.