Come usare l'impostazione `~ / .ssh / config` per ciascun server da` rsync`


14

Ora sto usando rsync con l' -e 'ssh -p 10022'opzione per specificare la porta.

Ho già impostato ssh ~/.ssh/config.

Host myvps
  HostName example.com
  User ironsand
  Port 10022

Posso usare facilmente questa configurazione da rsync? Oppure posso creare ~/.rsynce impostare una porta predefinita per specificare il server?

Risposte:


22

Specificare "myvps"come nome host.

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

fare rsync dalla directory home dell'utente in cui è conservata la configurazione di ssh, ha funzionato per me, anche se supporta la speranza del nodo.
Stalin Gino,

8

Questo non ha funzionato per me. Ho l'hosting di salto nel mio ~ / .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: impossibile risolvere il nome host vm-app01 : nome nodo o nome servizio fornito o non noto rsync: connessione inaspettatamente chiusa (0 byte ricevuti finora) [mittente] errore rsync: errore inspiegabile (codice 255) in / SourceCache / rsync / rsync- 42 / rsync / io.c (452) [mittente = 2.6.9]

Tuttavia, questo funziona bene

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

Modifica, sono stato in grado di superare la risoluzione dei nomi forzando rsync ssh a caricare un file di configurazione con -F sudo rsync -az -e "ssh -F /Users/kbroughton/.ssh/config"

Questo supera un errore ma su un altro. Autorizzazione negata (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: connessione chiusa dall'host remoto

Ho anche provato a impostare esplicitamente -i e l'utente @ nella connessione ma si verifica lo stesso errore.

MODIFICARE

Un altro punto dati. Se uso l'ip mobile del pivot vm (jump host) invece del suo nome vm-pivot rsync funziona. Ma scaricare esplicitamente tutto il mio ssh / config nel -e "ssh" non funziona. Dettagli: mac locale, aggiornato a rsync 3.1.0, centos remoto 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]

Questo funziona

[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

Mi sono reso conto che nel mio caso non potevo usare la scorciatoia, ma potevo usare il nome host completo effettivo
dashesy

1

@darKoram. Per i casi in cui invochi ssh con un percorso non standard e provi a usare ssh in ProxyCommand questo è un problema perché non c'è ereditarietà. Hai due opzioni lì: direct fornisce lo stesso file nel comando interno o hackeralo in modo dinamico. Puoi trovare una descrizione dettagliata nel mio post sul blog a riguardo: http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack

A breve nella tua situazione dovrebbe aiutare la configurazione come:

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. Esegui il processo 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

Qual è il nome DNS completo di "vm-app01"? Deve essere pubblico, poiché affermi di poterlo raggiungere in ssh senza rsync. Ma ti aspetti che ssh catturi il tuo host tramite lo schema "21ct-dev1- *". Non riesco davvero a vedere come questo potrebbe funzionare in alcun modo. Se provi a modellare i nomi host, dovrebbe assomigliare a questo:

Host *.21ct-dev1-domain.tld

Quindi la chiamata di rsync dovrebbe assomigliare a questa:

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

Come viene risolto "vm-app01"? File host, vittorie, nis, nss? Hai un alias? Sei all'interno di un dominio? Sembra certamente un "semplice" problema DNS.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.