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
메모리에로드 할 수 있습니다 . ssh
ssh-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