Ich habe den folgenden Befehl versucht:
rsync -rvz --progress --remove-sent-files ./dir [email protected]:2222/path
SSH läuft auf Port 2222, aber rsync versucht immer noch, Port 22 zu verwenden, und beschwert sich dann, dass der Pfad nicht gefunden wurde, da er natürlich nicht vorhanden ist.
Ich würde gerne wissen, ob es möglich ist, auf einem nicht-standardmäßigen ssh-Port mit einem Remote-Host zu synchronisieren.
Ihre Befehlszeile sollte folgendermaßen aussehen:
rsync -rvz -e 'ssh -p 2222' --progress --remove-sent-files ./dir [email protected]:/path
das funktioniert gut - ich benutze es ständig, ohne neue Firewall-Regeln zu benötigen. Beachten Sie, dass der SSH-Befehl selbst in Anführungszeichen steht.
Eine andere Option: In dem Host, von dem aus Sie rsync ausführen, legen Sie den Port in der Konfigurationsdatei ssh fest.
cat ~/.ssh/config
Host host
Port 2222
Dann spricht rsync über ssh mit Port 2222:
rsync -rvz --progress --remove-sent-files ./dir [email protected]:/path
wenn Sie Dateien über einen bestimmten SSH-Port senden müssen:
rsync -azP -e "ssh -p PORT_NUMBER" source destination
beispiel
rsync -azP -e "ssh -p 2121" /path/to/files/source [email protected]:/path/to/files/destination
verwenden Sie die "rsh-Option". z.B.:
rsync -avz --rsh='ssh -p3382' [email protected]_server_name:/opt/backups
siehe: http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/
Ein bisschen offtopic, könnte aber jemandem helfen. Wenn Sie Passwort und Port übergeben müssen, empfehle ich das Paket sshpass
. Befehlszeilenbefehl würde folgendermaßen aussehen: sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' [email protected]:/dir_on_Host/
Rsync wird als Daemon auf TCP Port 873 ausgeführt, ungeschützt, hat nichts mit SSH zu tun
Von Rsync Mann:
Drücken Sie: rsync [OPTION ...] SRC ... [USER @] Host: DEST
Führt Sie zu der Überzeugung, dass Ihr Befehl korrekt ist:
rsync -rvz --progress --remove-sent-files ./dir benutzer @ host: 2222/pfad
Das bedeutet jedoch, dass er sich an Port 2222 mit dem Rsync daemon verbinden soll, der nicht vorhanden ist.
Wie bereits erwähnt, ist die korrekte Syntax, Rsync mitzuteilen, einen benutzerdefinierten SSH-Befehl (Hinzufügen von -p 2222) zu verwenden, der die Verbindung (auf der entfernten Seite) mit TCP 873 für Rsync (unter Verwendung eines sicheren SSH-Tunnels) fortsetzt.
rsync -rvz --progress --remove-sent-files -e "ssh -p 2222" ./dir benutzer @ host/pfad
Ich habe diese Lösung auf Mike Hike Hostetlers Site gefunden, die perfekt für mich funktioniert hat.
# rsync -avz -e "ssh -p $portNumber" [email protected]:/path/to/files/ /local/path/