연구 기관에서 호스팅하는 가상 머신인 원격 서버에 디렉터리를 정기적으로 백업해야 합니다. SSH 키를 통해 VM에 액세스해야 합니다. 단, rsync가 해당 서버의 SSH 키를 가리키는 방법을 모른다는 점을 제외하면 괜찮습니다.
키 파일이면 Rsync에는 문제가 없지만 ~/.ssh/id_rsa
다른 파일이면 알 수 있습니다 Permission denied (publickey)
.
ssh를 사용하면 지정된 ID 파일을 사용할 수 있지만 -i
rsync에는 그러한 옵션이 없는 것 같습니다.
또한 로컬 컴퓨터에서 일시적으로 키를 이동하려고 시도했지만 ~/.ssh/id_rsa
그것도 작동하지 않았습니다.
너무 길어요.
rsync를 사용하여 ID 파일을 지정할 수 있습니까?
답변1
"-e" 옵션을 통해 정확한 ssh 명령을 지정할 수 있습니다:
rsync -Pav -e "ssh -i $HOME/.ssh/somekey" username@hostname:/from/dir/ /to/dir/
많은 SSH 사용자는 ~/.ssh/config 파일에 익숙하지 않습니다. 구성 파일을 통해 각 호스트의 기본 설정을 지정할 수 있습니다.
Host hostname
User username
IdentityFile ~/.ssh/somekey
장기적으로는 ~/.ssh/config 파일을 연구하는 것이 좋습니다.
답변2
이는 SSH 사용자 구성을 통해 수행할 수 있습니다. 다음을 참조하세요. http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ 기본적으로 ~/.ssh/config를 편집하세요.
$ nano ~/.ssh/config
#Add Hosts below
Host server1
HostName examplehost.com
User username
Port 22
IdentityFile /path/to/key
$ rsync -e ssh /home/user/directory [email protected]:home/user/directory/
이는 SSH, rsync를 사용하는 모든 프로그램에서 작동합니다.
답변3
나에게는 다음과 같이 ssh-agent를 시작하는 것으로 충분했습니다.
eval `ssh-agent -s`
ssh-add /path/to/mykey
여기에서 더 긴 답변도 참조하세요.https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
답변4
참고로:
1) 공개 키는 항상 원격 서버에 로그인한 사용자의 홈 디렉터리에 있습니다. 즉, "backup"으로 로그인한 경우 공개 키는 /home/backup/.ssh/authorized_keys에 있습니다. 로그인 시 사용자 ID는 대상에서 사용되는 공개 키를 정의합니다.
두 가지 방법으로 연결할 때 사용자 ID를 선택할 수 있습니다.
ssh [email protected]
or
ssh -l user_id destination_server (<-- that is lower case "L")
반면에 개인 키는 Dan의 답변에서 언급한 대로 재정의하지 않는 한 사용자의 홈 디렉터리에 비슷한 방식으로 존재합니다.
2) 백업 목적으로 "rsync"와 같은 단일 명령 실행으로 제한되는 제한된 키를 생성할 수 있습니다. 권한이 없는 사용자 계정과 "sudo"를 사용하여 전체 서버를 원격으로 백업할 수 있는 "rsnapshot" 백업에 대한 좋은 설명이 있습니다.
Rsnapshot은 여러 원격 또는 로컬 서버를 쉽게 백업할 수 있으므로 편리한 예약 및 중앙 집중식 백업 서버가 됩니다.