rsync에서 ID 파일을 어떻게 사용합니까?


125

rsync에서 ID 파일을 어떻게 사용합니까?

이것은 ID 파일을 사용하여 연결하기 위해 rsync와 함께 사용해야 한다고 생각 하는 구문입니다 .

rsync -avz -e 'ssh -p1234 -i ~ / .ssh / 1234-identity'\
"/ local / dir /"remoteUser@22.33.44.55 : "/ remote / dir /"

하지만 오류가 발생합니다.

경고 : 식별 파일 ~ / .ssh / 1234-identity에 액세스 할 수 없음 : 해당 파일 또는 디렉토리가 없습니다.

파일은 괜찮고 권한이 올바르게 설정되어 있으며 적어도 내 구문에서 rsync가 아닌 ssh를 수행 할 때 작동합니다. 내가 뭘 잘못하고 있죠? 원격 시스템에서 ID 파일을 찾으려고합니까? 그렇다면 로컬 컴퓨터 에서 ID 파일을 사용하도록 지정하려면 어떻게해야 합니까?

답변:


86

키 를 사용 ssh-agent하고 ssh-add메모리에로드 할 수 있습니다 . sshssh-agent에서 ID를 찾을 수 있으면 자동으로 시도합니다. 명령은

eval $(ssh-agent) # Create agent and environment variables
ssh-add ~/.ssh/1234-identity

ssh-agent메모리에 암호화되지 않은 SSH 키를 보유하는 사용자 데몬입니다. ssh는 실행시 ssh-agent가 출력하는 환경 변수를 기반으로 찾습니다. eval이 출력을 평가하는 데 사용 하면 환경 변수가 생성됩니다. ssh-add키 메모리를 관리하는 명령입니다. 에이전트는 ssh-add를 사용하여 잠글 수 있습니다. 키의 기본 수명은 ssh-agent가 시작될 때 지정되거나 키가 추가 될 때 지정 될 수 있습니다.

포트 및 키 정의를 제공하기 위해 ~ / .ssh / config 파일을 설정할 수도 있습니다. (더 많은 옵션은`man ssh_config 참조.)

host 22.33.44.55
    IdentityFile ~/.ssh/1234-identity
    Port 1234

ssh 명령을 작은 따옴표로 묶으면 ~또는에 필요한 쉘 확장을 방지 할 수 $HOME있습니다. 작은 따옴표로 묶인 키에 대한 전체 또는 상대 경로를 사용할 수 있습니다.


2
큰 따옴표와 $ HOME을 사용하면 문제가 해결되었습니다. 처음 두 명령이 수행하는 작업에 대해 자세히 설명 할 수 있습니까? 이미 구성 파일 설정에 익숙했습니다. 유일한 문제는 한 서버에 여러 계정이있을 때입니다. 동일한 호스트에 대해 여러 ID 파일을 지정할 수있을 것으로 예상하지 않습니다.
cwd

+1 이것은 drone.io의 문제를 해결했습니다. :) 고맙습니다.
Bhargav Nanekalva 2014 년

이건 굉장하다. FTR, 예를 들어 User ubuntuEC2 Ubuntu 인스턴스를 구성 할 때 연결할 기본 사용자 이름을 지정할 수도 있습니다 . :) 감사합니다!
DanielSmedegaardBuus

csh 스타일 쉘 (예 :)을 사용하는 경우 fish다음을 수행하십시오.eval (ssh-agent -c)
Dave

77

둘 중 하나를 사용하십시오. $HOME

rsync -avz -e "ssh -p1234  -i \"$HOME/.ssh/1234-identity\"" dir remoteUser@server:

또는 키에 대한 전체 경로 :

rsync -avz -e "ssh -p1234  -i /home/username/.ssh/1234-identity" dir user@server:

Ubuntu에서 rsync 3.0.9로 테스트되었습니다.


3
예, 잘 작동하며 ssh-agent 또는 기타 구성 옵션을 사용할 필요가 없습니다.
laurent

2
+1 : 이것은 "ls '~'"를 할 수 없었던 것처럼 끔찍한 문제입니다
Alex

$HOME간단한 따옴표 (변수 확장 없음) 내에서는 작동하지 않으므로 큰 따옴표 나 절대 경로를 사용해야합니다.
anol 2014-08-14

표준 배쉬에서 작동해야한다 "$HOME"또는 $HOME어떤 차이없이 (또한 "${HOME}"당신이 복잡하게하려면, 수)
Tombart

작은 따옴표를 두 배로 변경했습니다.
Steve Bennett

36

ID 키 파일의 절대 경로를 지정해야합니다. 이것은 아마도 rsync에서 일종의 기발한 일입니다. (결국 완벽 할 수는 없다)

며칠 전에이 문제가 발생했습니다. :-)


~를 사용할 수 있지만 작은 따옴표 안에 삽입 할 수 없습니다. / home / username /으로 올바르게 대체되지 않기 때문에 올바르게 작동하려면 큰 따옴표를 사용해야합니다. @ilcavero의 솔루션
X를

24

이것은 나를 위해 작동합니다

rsync -avz --rsh="ssh -p1234  -i ~/.ssh/1234-identity"  \
"/local/dir/" remoteUser@22.33.44.55:"/remote/dir/"

2
어떤 이유로 ID 파일의 전체 경로를 지정해야했습니다 /home/user/.ssh/1234-identity. 그런 다음 작동했습니다. 아마도 Darhuuk의 대답에서 제안한 것처럼 다른 껍질이기 때문일 수 있습니다.
osa

@osa 당신은 저를 거기에 구했습니다! 나는 Drupal과 rSYNC에 문제가 있었고 문제는 경로였습니다 ... 이상했습니다.
Lee Woodman

6

bash 또는 sh에서 명령을 실행하고 있습니까? 이것은 차이를 만들 수 있습니다. 교체 시도 ~와 함께 $HOME. -e옵션 의 문자열을 큰 따옴표로 묶으십시오 .


6

rsync와 함께 키 파일 사용 :

rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ ubuntu@231.210.24.48:/var/www/test
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.