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

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 파일을 사용하도록 지정하려면 어떻게해야 합니까?



답변

키 를 사용 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있습니다. 작은 따옴표로 묶인 키에 대한 전체 또는 상대 경로를 사용할 수 있습니다.


답변

둘 중 하나를 사용하십시오. $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로 테스트되었습니다.


답변

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

며칠 전에이 문제가 발생했습니다. 🙂


답변

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

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


답변

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


답변

rsync와 함께 키 파일 사용 :

rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ ubuntu@231.210.24.48:/var/www/test


답변