ejemplos - ¿Es posible especificar un puerto ssh diferente cuando se usa rsync?
rsync ejemplos (8)
He estado intentando el siguiente comando:
rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path
SSH se está ejecutando en el puerto 2222, pero rsync aún intenta usar el puerto 22 y luego se queja de no encontrar la ruta, ya que, por supuesto, no existe.
Me gustaría saber si es posible hacer rsync a un host remoto en un puerto ssh no estándar.
Encontré esta solución en el sitio de Mike Hike Hostetler que funcionó perfectamente para mí.
# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
No pude hacer que rsync se conecte a través de ssh en un puerto diferente, pero no pude redirigir la conexión ssh a la computadora que quería a través de iptables. Esta no es la solución que estaba buscando, pero resolvió mi problema.
Otra opción, en el host desde donde ejecuta rsync, configure el puerto en el archivo de configuración ssh, es decir:
cat ~/.ssh/config
Host host
Port 2222
Entonces rsync over ssh hablará con el puerto 2222:
rsync -rvz --progress --remove-sent-files ./dir user@host:/path
Rsync se ejecuta como un demonio en el puerto TCP 873, sin protección, no tiene nada que ver con SSH
Desde el hombre Rsync:
Push: rsync [OPCIÓN ...] SRC ... [USUARIO @] HOST: DEST
Te lleva a creer que tu orden es correcta:
rsync -rvz --progress --remove-sent-files ./dir usuario @ host: 2222 / ruta
Sin embargo, eso le indica que se conecte al demonio Rsync en el puerto 2222, que no está allí.
Como se indicó, la sintaxis correcta es decirle a Rsync que use un comando SSH personalizado (que agrega -p 2222), que continuará conectándose (en el lado remoto) a TCP 873 para rsync (usando un túnel SSH seguro).
rsync -rvz --progress --remove-sent-files -e "ssh -p 2222" ./dir usuario @ host / ruta
Su línea de comando debe verse así:
rsync -rvz -e ''ssh -p 2222'' --progress --remove-sent-files ./dir user@host:/path
Esto funciona bien. Lo uso todo el tiempo sin necesidad de nuevas reglas de firewall. Solo tenga en cuenta que el comando SSH está entre comillas.
Un poco offtopic pero podría ayudar a alguien. Si necesita pasar la contraseña y el puerto, le sugiero usar el paquete sshpass
. El comando de la línea de comandos se vería así: sshpass -p "password" rsync -avzh -e ''ssh -p PORT312'' [email protected]:/dir_on_host/
cuando necesite enviar archivos a través de un puerto SSH específico:
rsync -azP -e "ssh -p PORT_NUMBER" source destination
ejemplo
rsync -azP -e "ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination
utilizar la "opción rsh". p.ej:
rsync -avz --rsh=''ssh -p3382'' root@remote_server_name:/opt/backups
consulte: http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/