Cómo usar la configuración `~ / .ssh / config` para cada servidor mediante` rsync`


14

Ahora estoy usando rsync con -e 'ssh -p 10022'opción para especificar el puerto.

Ya he establecido ssh ~/.ssh/config.

Host myvps
  HostName example.com
  User ironsand
  Port 10022

¿Puedo usar esta configuración desde rsync fácilmente? ¿O puedo crear ~/.rsyncy establecer un puerto predeterminado para especificar el servidor?

Respuestas:


22

Especificar "myvps"como el nombre de host.

rsync /var/bar myvps:/home/foo ...

hacer rsync desde el directorio de inicio del usuario donde se guarda la configuración ssh, funcionó para mí, incluso admite la esperanza de nodo.
Stalin Gino

8

Esto no funcionó para mí. Tengo un hosting de salto en mi ~ / .ssh / config

Host 10.x.y.z
    User cloud-user
    HostName vm-pivot
    IdentityFile /path_to_vm_key

Host 21ct-dev1-*
    User cloud-user
    HostName %h.example.com
    ProxyCommand ssh 10.x.y.z -W %h:%p
    IdentityFile /path_to_vm_key


rsync -e "ssh" local_path vm-app01:/remote_path

ssh: no se pudo resolver el nombre de host vm-app01 : nombre de servidor ni nombre de servidor proporcionados, o no se conoce rsync: conexión inesperadamente cerrada (0 bytes recibidos hasta ahora) [remitente] error rsync: error inexplicado (código 255) en / SourceCache / rsync / rsync- 42 / rsync / io.c (452) [remitente = 2.6.9]

Sin embargo, esto funciona bien

[kbroughton@kbroughton:project + (develop)] ssh vm-app01
Last login: Thu Apr 17 12:10:37 2014 from 10.a.b.c

Editar, pude superar la resolución de nombre forzando a rsync ssh a cargar un archivo de configuración con -F sudo rsync -az -e "ssh -F /Users/kbroughton/.ssh/config"

Esto supera un error pero pasa a otro. Permiso denegado (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: conexión cerrada por host remoto

También intenté establecer explícitamente -i y usuario @ en la conexión pero se produce el mismo error.

EDITAR

Otro punto de datos. Si uso la ip flotante del pivot vm (jump host) en lugar de su nombre, vm-pivot rsync funciona. Pero explícitamente volcar todo mi ssh / config en el -e "ssh" no funciona. Detalles: mac local, actualizado a rsync 3.1.0, centos remotos rsync 3.0.9.

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz user@vm-pivot:/home/user

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0]

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz user@10.x.y.z:/home/user
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(181) [sender=3.1.0]

Esto funciona

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key"  /var/data/sources/data.tar.gz user@10.x.y.z:/home/user

Me di cuenta de que en mi caso no podía usar el acceso directo, pero podría usarse el nombre de host completo real
guiones el

1

@darKoram. Para los casos en los que invoque ssh con una ruta no estándar e intente usar ssh en ProxyCommand, eso es un problema porque no hay herencia. Tiene dos opciones: proporcionar directamente el mismo archivo en el comando interno o piratearlo dinámicamente. Puede ver una descripción detallada en mi blog acerca de eso: http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack

En breve en su situación debería ayudar la configuración como:

Host 21ct-dev1-*
  User cloud-user
  HostName %h.example.com
  ProxyCommand ssh $( egrep -z -A1 '^-F$' /proc/$PPID/cmdline ) 10.x.y.z -W %h:%p
  IdentityFile /path_to_vm_key

0

@darKoram. Ejecute el proceso SSH con sudo:

sudo / usr / local / bin / rsync -az -e "sudo -u user ssh" /var/data/sources/data.tar.gz vm-app01: / home / user


-1

@darKoram

¿Cuál es el nombre DNS completo de "vm-app01"? Debe ser público, ya que usted afirma que puede acceder a él dentro de ssh sin rsync. Pero, espera que ssh atrape a su host a través del patrón "21ct-dev1- *". Realmente no puedo ver cómo esto podría funcionar de ninguna manera. Si intenta modelar nombres de host, debería verse así:

Host *.21ct-dev1-domain.tld

Entonces la llamada de rsync debería verse así:

rsync -e "ssh" /local/path/ vm-app01.21ct-dev1-domain.tld:/remote/path/

¿Cómo se resuelve "vm-app01"? Archivo de hosts, victorias, nis, nss? ¿Tienes un alias? ¿Estás dentro de un dominio? Ciertamente parece un problema de DNS "simple".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.