Cara menggunakan pengaturan `~ / .ssh / config` untuk setiap server dengan` rsync`

14

Saya sekarang menggunakan rsync dengan -e 'ssh -p 10022'opsi untuk menentukan port.

Saya sudah memiliki pengaturan ssh ~/.ssh/config.

Host myvps
  HostName example.com
  User ironsand
  Port 10022

Bisakah saya menggunakan konfigurasi ini dari rsync dengan mudah? Atau Dapatkah saya membuat ~/.rsyncdan mengatur port default untuk server yang ditentukan?

pasir besi
sumber

Jawaban:

22

Tentukan "myvps"sebagai nama host.

rsync /var/bar myvps:/home/foo ...
Ignacio Vazquez-Abrams
sumber
melakukan rsync dari dir home user di mana ssh config disimpan, bekerja untuk saya, bahkan mendukung node yang berharap.
Stalin Gino
8

Ini tidak berhasil untuk saya. Saya telah melompat hosting di ~ / .ssh / config saya

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: Tidak dapat menyelesaikan hostname vm-app01 : nodename atau servname yang diberikan, atau tidak dikenal rsync: koneksi ditutup secara tak terduga (0 byte diterima sejauh ini) [pengirim] kesalahan rsync: kesalahan yang tidak dapat dijelaskan (kode 255) di / SourceCache / rsync / rsync- 42 / rsync / io.c (452) [pengirim = 2.6.9]

Namun, ini berfungsi dengan baik

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

Sunting, saya bisa melewati resolusi nama dengan memaksa rsync ssh untuk memuat file konfigurasi dengan -F sudo rsync -az -e "ssh -F / Pengguna / kbroughton/.ssh/config"

Ini melewati satu kesalahan tetapi ke kesalahan lainnya. Izin ditolak (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: Koneksi ditutup oleh host jarak jauh

Juga mencoba pengaturan -i dan pengguna @ secara eksplisit di sambungan tetapi terjadi kesalahan yang sama.

EDIT

Titik data lain. Jika saya menggunakan ip mengambang dari pivot vm (host melompat), bukan namanya vm-pivot rsync bekerja. Tetapi secara eksplisit membuang semua ssh / config saya di -e "ssh" tidak berfungsi. Detail: mac lokal, ditingkatkan ke rsync 3.1.0, centos jarak jauh 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 [email protected]:/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]

Ini bekerja

[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 [email protected]:/home/user
daroram
sumber
Saya menyadari bahwa dalam kasus saya, saya tidak dapat menggunakan pintasan, tetapi nama host lengkap sebenarnya dapat digunakan
dashesy
1

@dorKoram. Untuk kasus di mana Anda menjalankan ssh dengan jalur non-standar dan coba gunakan ssh di ProxyCommand yang menjadi masalah karena tidak ada warisan. Anda memiliki dua opsi di sana: langsung memberikan file yang sama di perintah dalam, atau secara dinamis meretasnya. Anda dapat melihat deskripsi rinci di posting blog saya tentang itu: http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack

Situasi tak lama di Anda akan membantu konfigurasi seperti:

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
Hubbitus
sumber
0

@dorKoram. Jalankan proses SSH dengan sudo:

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

Greywood
sumber
-1

@dorKoram

Apa nama DNS lengkap "vm-app01"? Itu harus bersifat publik, karena Anda mengklaim Anda dapat mencapainya dalam ssh tanpa rsync. Tapi, Anda berharap ssh untuk menangkap host Anda melalui pola "21ct-dev1- *". Saya benar-benar tidak bisa melihat bagaimana ini bisa bekerja dengan cara apa pun. Jika Anda mencoba memola nama host, itu akan terlihat seperti ini:

Host *.21ct-dev1-domain.tld

Maka panggilan rsync akan terlihat seperti ini:

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

Bagaimana "vm-app01" diselesaikan? File host, menang, nis, nss? Apakah Anda memiliki alias? Apakah Anda berada dalam domain? Ini tentu terlihat seperti masalah DNS "sederhana".

WGRM
sumber