Jak używać ustawienia `~ / .ssh / config` dla każdego serwera przez` rsync`

14

Teraz używam rsync z -e 'ssh -p 10022'opcją określenia portu.

Mam już ustawienie ssh ~/.ssh/config.

Host myvps
  HostName example.com
  User ironsand
  Port 10022

Czy mogę łatwo używać tej konfiguracji z rsync? Czy mogę utworzyć ~/.rsynci ustawić domyślny port dla określonego serwera?

żelazko piaskowe
źródło

Odpowiedzi:

22

Podaj "myvps"jako nazwę hosta.

rsync /var/bar myvps:/home/foo ...
Ignacio Vazquez-Abrams
źródło
wykonywanie rsync z katalogu domowego użytkownika, w którym przechowywana jest konfiguracja ssh, działało dla mnie, nawet obsługuje nadzieję na węzeł.
Stalin Gino,
8

To mi nie zadziałało. Mam Jump Hosting w mojej ~ / .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: Nie można rozpoznać nazwy hosta vm-app01 : podana nazwa węzła lub nazwa serwera, lub nieznana rsync: połączenie niespodziewanie zamknięte (do tej pory otrzymano 0 bajtów) [nadawca] błąd rsync: niewyjaśniony błąd (kod 255) w / SourceCache / rsync / rsync- 42 / rsync / io.c (452) [nadawca = 2.6.9]

Działa to jednak dobrze

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

Edytuj, udało mi się ominąć rozpoznawanie nazw, zmuszając rsync ssh do załadowania pliku konfiguracyjnego z -F sudo rsync -az -e "ssh -F /Users/kbroughton/.ssh/config"

Pomija jeden błąd, ale przechodzi na inny. Odmowa dostępu (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: Połączenie zamknięte przez zdalny host

Próbowano także jawnie ustawić -i i użytkownik @ w połączeniu, ale występuje ten sam błąd.

EDYTOWAĆ

Kolejny punkt danych. Jeśli użyję zmiennoprzecinkowego adresu IP pivot vm (Jump Host) zamiast jego nazwy, vm-pivot rsync działa. Ale jawne zrzutowanie wszystkich moich ssh / config w -e „ssh” nie działa. Szczegóły: lokalny Mac, uaktualniony do rsync 3.1.0, zdalne centos 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]

To działa

[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
darKoram
źródło
Uświadomiłem sobie, że w moim przypadku nie mogę użyć skrótu, ale można użyć rzeczywistej pełnej nazwy hosta
dashy
1

@darKoram. W przypadkach, w których wywołujesz ssh ze niestandardową ścieżką i próbujesz użyć ssh w ProxyCommand, jest to problem, ponieważ nie ma dziedziczenia. Masz dwie opcje: bezpośrednio podaj ten sam plik w poleceniu wewnętrznym lub dynamicznie zhakuj go. Szczegółowy opis możesz znaleźć w moim blogu na ten temat: http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack

Krótko w twojej sytuacji powinna pomóc konfiguracja taka jak:

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
źródło
0

@darKoram. Uruchom proces SSH za pomocą sudo:

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

Greywood
źródło
-1

@darKoram

Jaka jest pełna nazwa DNS „vm-app01”? Musi być publiczny, ponieważ twierdzisz, że możesz go osiągnąć w ssh bez rsync. Ale oczekujesz, że ssh złapie twojego hosta za pomocą wzorca „21ct-dev1- *”. Naprawdę nie widzę, jak to może działać w jakikolwiek sposób. Jeśli spróbujesz wzorować nazwy hostów, powinno to wyglądać mniej więcej tak:

Host *.21ct-dev1-domain.tld

Następnie wywołanie rsync powinno wyglądać mniej więcej tak:

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

Jak rozwiązać problem „vm-app01”? Plik hostów, wygrane, nis, nss? Czy masz pseudonim? Czy jesteś w domenie? Z pewnością wygląda to jak „prosty” problem DNS.

WGRM
źródło