Czy potrzebujesz -e ssh do rsync?

22

Zawsze używałem następującą komendę przy kopiowaniu z serwera: rsync --progress -avze ssh user@host:/path/to/files ./here. Jednak przyjaciel umysłu pokazał mi, że mogę to po prostu zrobić rsync --progress -avz user@host:/path/to/files ./here. Pytanie brzmi: czy nie potrzebujesz, -e sshdlaczego tak jest?

GradGuy
źródło

Odpowiedzi:

20

Za każdym razem, gdy potrzebujesz dodatkowych opcji do komendy ssh poza użytkownikiem i hostem, potrzebujesz flagi -e. Być może serwer, z którym się łączysz, nasłuchuje ssh na porcie 2222.

rsync -e 'ssh -p 2222' /source usr@host:/dest

Alternatywą do obejścia tego są 2 pliki, których możesz użyć. /etc/ssh/ssh_configlub~/.ssh/config

Plik konfiguracyjny używa tego samego formatu co ssh_config. Można go skonfigurować tylko dla poszczególnych użytkowników!

Utah Jarhead
źródło
9

Będziesz także potrzebny, -ejeśli użyjesz innej niż domyślna lokalizacji klucza prywatnego, tzn. Określisz klucz prywatny za pomocą -e 'ssh -i /path/to/private/key/file.pem'. W tym przypadku również inne niż domyślne porty nasłuchiwania dla sshd. Zasadniczo użyj, -ejeśli samo użycie ssh user@hostnie działa.

cjc
źródło
Czy -iw twoim przykładzie jest opcja ssh lub rsync? A jeśli dotyczy ssh, to czy działa bez pojedynczych cudzysłowów wokół polecenia?
Izkata,
Och, tak, potrzebuję cytatów. Edycja mojej odpowiedzi teraz.
cjc
8

Nie potrzebujesz -e ssh, aby używać ssh. W rzeczywistości, jeśli określisz cel jako użytkownik @ host: / ścieżka / do / plików, domyślnie używasz ssh. Zostało to w a) ze względu na kompatybilność i b) na marginesie przypadków, w których możesz mieć kombinację hostów rsyncd i ssh.

Joel E. Salas
źródło
2
Jest to wymagane na przykład w RHEL 3, ponieważ RSYNC_RSH ma domyślnie „rsh”.
Kyle Smith,
5

Zależy to od tego, co określono dla --with-rshopcji konfiguracji w czasie kompilacji. Domyślną wartością jest teraz ssh, jeśli ta opcja nie została określona. W przeszłości był to rsh, jednak nawet jeśli jest to rsh, może nie być konieczne, ponieważ ssh może być domyślną implementacją rsh w wielu urządzeniach. Na przykład na wszystkich moich komputerach readlink -f $(which rsh)pokazuje, że rsh jest tak naprawdę tylko dowiązaniem symbolicznym wskazującym na / usr / sbin / ssh

gulasz
źródło