rsync ssh und die shell

hallo,

ich hab 2 VMs und will von einer zur anderen daten übermitteln/syncronisieren mittels rsync und ssh.
Der befehl dafür ist dieser:

rsync -av -e "ssh user@VM1" test.file user@VM1:src/

soweit funzt das auch. Nun will ich aber verhindern, dass der User beim Anmelden am ssh server(druch ssh user@VM1) eine shell bekommt.

Das habe ich erreicht durch chsh -s /bin/false user. Hat auch wunderbar funktioniert. Nur kann ich jetzt den oberen Befehl nicht mehr ausführen.

Ich erhalte folgende Fehlermeldung:
rsync: connection unexpectedly closed(0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601)[sender 3.0.7]

Ich vermute, dass der user an VM1 eine Shell braucht um rsync korrekt ausführen zu können. Sehe da aber keine vereinbarkeit.
Eine Einstellung für die config datei des Servers oder ein zu übergebender Parameter dafür habe ich bis jetzt nicht gefunden.
 
ich hab das geraden ausprobiert. Nach dem Artikel von deinem Link funzt das nicht. Vlt da ich auch nicht weiß welchen pfad ich nun angeben soll.
ich hab getestet mit /usr/lib/sftp-server (.../rsync war nicht vorhanden) und mit .../ssl.

Auch die restricted Shell funzte nicht.
 
Mit rssh als restricted Shell geht es ziemlich sicher, denn dort ist explizit eine rsync-Unterstützung drin. Ggf. geht es mit einem SFTP-Only-Account nicht, weil du ja im rsync-Befehl explizit SSH nutzt, wofür dann eine Shell notwendig ist.
 
also, ich kann mit mit ssh einloggen und werde auch wie gewünscht direkt nach der anmeldung wieder ausgeloggt. Aber er führt rsync net aus.

unter /usr/lib/rssh/ hab ich nur einen chroot_helper. Das wirds doch kaum sein, oder?

Hab rssh mittels apt-get install rssh installiert. Weitere optionen gabs nicht.

Ich werd ma nach einem entsprechenden packet googlen.
 
ok. ich hab rssh.conf angepasst(nach man page).
Hier der Inhalt:

Code:
logfacility = LOG_USER
allowrsync
umask = 022
user:x:666:666::/home/user:/usr/bin/rssh

Immernoch der gleiche Fehler beim anmelden mit rsync.

es scheint, also ob keine einstellunge, die ich in rssh.conf änder etwas bewirkt.
 
Zuletzt bearbeitet:
Warum nicht den host key nutzen? Dafür ist es doch da. Wenn Du befürchten musst, dass die Quellkiste gerootet wird, dann solltest Du das loesen ;)
 
Ok, es funzt nu so wie es soll.
Mein Fehler am Ende war, dass ich nicht /usr/bin/rssh als Shell für meinen User hatte.

Force Command habe ich jetzt nicht ausprobiert.

Aber danke euch allen für die Hilfe.
 
ok, es funzt doch nicht :'-(

Wenn ich das ganze versuche mit modulen zu machen, als folgenden Befehl des Clients:
rsync -avz -e "ssh l user" dummy.txt user@host::user1/

user1 ist ein modul das ich in rsyncd.conf angegeben habe.
führe ich diesen Befehl nun aus schreibt der Server ins syslog
"unable to open configuration file "rsyncd.conf": No such file or directory

rsyncd.conf ist aber in /etc In das Logfile, das in dieser Datei angegeben wird wird ja auch reingeschrieben.
 
so wies aussieht. Will er das rsyncd.conf file im /home/user/ verzeichniss haben. Wisst ihr wo man das einstelle wo der nach dem file sucht? das script unter etc/init.d/rsync da ist der pfad korrekt auf /etc/rsyncd.conf
 
Zurück
Oben