[unix] rsync로 각 서버에 대해`~ / .ssh / config 설정을 사용하는 방법

이제 rsync를 -e 'ssh -p 10022'옵션 과 함께 사용하여 포트를 지정하고 있습니다.

에 이미 ssh 설정이 ~/.ssh/config있습니다.

Host myvps
  HostName example.com
  User ironsand
  Port 10022

rsync에서이 구성을 쉽게 사용할 수 있습니까? 또는 ~/.rsync서버 지정을위한 기본 포트를 작성 하고 설정할 수 있습니까 ?



답변

"myvps"호스트 이름으로 지정 하십시오.

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


답변

이것은 나를 위해 작동하지 않았습니다. ~ / .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 : 호스트 이름 vm-app01을 확인할 수 없습니다 . nodename 또는 servname 제공 또는 알 수없는 rsync : 연결이 예기치 않게 닫혔습니다 (0 바이트 수신) [송신자] rsync 오류 : / SourceCache / rsync / rsync-에서 설명 할 수없는 오류 (코드 255) 42 / rsync / io.c (452) [발신자 = 2.6.9]

그러나 이것은 잘 작동합니다

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

편집, rsync ssh가 -F sudo rsync -az -e “ssh -F /Users/kbroughton/.ssh/config”를 사용하여 구성 파일을로드하도록하여 이름 확인을 통과 할 수있었습니다.

이것은 하나의 오류를지나 다른 오류를 낳습니다. 권한이 거부되었습니다 (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification : 원격 호스트에 의한 연결 종료

또한 연결에서 명시 적으로 -i 및 user @를 설정하려고 시도했지만 동일한 오류가 발생합니다.

편집하다

다른 데이터 포인트. 이름 대신 vm-pivot rsync 대신 피벗 vm (점프 호스트)의 유동 IP를 사용하면 작동합니다. 그러나 -e “ssh”에서 모든 ssh / config를 명시 적으로 덤프하면 작동하지 않습니다. 세부 사항 : 로컬 Mac, rsync 3.1.0으로 업그레이드, 원격 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 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]

이 작동합니다

[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


답변

@darKoram. 비표준 경로로 ssh를 호출하고 상속이 없기 때문에 ProxyCommand에서 ssh를 사용해보십시오. 내부 명령에 동일한 파일을 직접 제공하거나 동적으로 해킹하는 두 가지 옵션이 있습니다. http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack에 대한 내 블로그 게시물에서 자세한 설명을 볼 수 있습니다 .

곧 상황은 다음과 같은 구성에 도움이 될 것입니다.

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


답변

@darKoram. sudo를 사용하여 SSH 프로세스를 실행하십시오.

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


답변

@

“vm-app01″의 전체 DNS 이름은 무엇입니까? rsync없이 ssh 내에서 도달 할 수 있다고 주장하기 때문에 공개되어야합니다. 그러나 ssh가 “21ct-dev1- *”패턴을 통해 호스트를 잡을 것으로 예상합니다. 나는 이것이 어떻게 어떤 식으로 작동하는지 알 수 없습니다. 호스트 이름을 패턴 화하려고하면 다음과 같아야합니다.

Host *.21ct-dev1-domain.tld

그런 다음 rsync 호출은 다음과 같습니다.

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

“vm-app01″은 어떻게 해결됩니까? 호스트 파일, 승, NIS, NSS? 별칭이 있습니까? 도메인 내에 있습니까? “단순한”DNS 문제처럼 보입니다.


답변