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


14

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

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

Host myvps
  HostName example.com
  User ironsand
  Port 10022

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

답변:



8

이것은 나를 위해 작동하지 않았습니다. ~ / .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

내 경우에는 내가 바로 가기를 사용할 수 없다는 것을 깨달았지만, 실제 전체 호스트 이름을 사용할 수 있습니다
dashesy

1

@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

0

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

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


-1

@

"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 문제처럼 보입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.