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?

Jawaban:


22

Tentukan "myvps"sebagai nama host.

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

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 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]

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 user@10.x.y.z:/home/user

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

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


-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".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.