web-dev-qa-db-fra.com

Est-il possible de spécifier un port ssh différent lors de l'utilisation de rsync?

J'ai essayé la commande suivante: 

rsync -rvz --progress --remove-sent-files ./dir user@Host:2222/path

SSH fonctionne sur le port 2222, mais rsync essaie toujours d’utiliser le port 22 et se plaint de ne pas trouver le chemin, car il n’existe bien sûr pas. 

J'aimerais savoir s'il est possible de rsync sur un hôte distant sur un port ssh non standard.

309
Ketema

Votre ligne de commande devrait ressembler à ceci:

rsync -rvz -e 'ssh -p 2222' --progress --remove-sent-files ./dir user@Host:/path

cela fonctionne bien - je l'utilise tout le temps sans avoir besoin de nouvelles règles de pare-feu - il suffit de noter que la commande SSH elle-même est entre guillemets.

523
klapa

Une autre option, dans l'hôte à partir duquel vous exécutez rsync, configurez le port dans le fichier de configuration ssh, par exemple:

cat ~/.ssh/config
Host host
    Port 2222

Ensuite, rsync sur ssh parlera au port 2222:

rsync -rvz --progress --remove-sent-files ./dir user@Host:/path
106
Joao Costa

lorsque vous devez envoyer des fichiers via un port SSH spécifique:

rsync -azP -e "ssh -p PORT_NUMBER" source destination

exemple

rsync -azP -e "ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination
13
Techie

utilisez l'option "rsh option". par exemple.: 

rsync -avz --rsh='ssh -p3382' root@remote_server_name:/opt/backups

se référer à: http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/

5

Un peu offtopic mais pourrait aider quelqu'un. Si vous avez besoin de mot de passe et de port, je vous suggère d’utiliser le paquet sshpass. La commande en ligne de commande ressemblerait à ceci: sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' [email protected]:/dir_on_Host/

1
Tomas

Rsync s'exécute en tant que démon sur le port TCP 873, non protégé, n'a rien à voir avec SSH

De l'homme Rsync:

Push: rsync [OPTION ...] SRC ... [USER @] Hôte: DEST

Vous amène à croire que votre commande est correcte:

rsync -rvz --progress --remove-sent-files ./dir user @ Host: 2222/path

Cependant, cela lui indique de se connecter à Rsync daemon sur le port 2222, qui n’y est pas.

Comme indiqué précédemment, la syntaxe correcte consiste à indiquer à Rsync d'utiliser une commande SSH personnalisée (en ajoutant -p 2222), qui continuera à se connecter (côté distant) à TCP 873 pour rsync (à l'aide du tunnel SSH sécurisé).

rsync -rvz --progress --remove-sent-files -e "ssh -p 2222" ./dir utilisateur @ hôte/chemin

0
kevinf

J'ai trouvé cette solution sur le site de Mike Hike Hostetler qui a parfaitement fonctionné pour moi.

# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
0
Rusty1