두 서버 간에 rsync를 실행하려고 합니다. 내 근거는 다음 기사입니다.두 리모컨 간에 파일을 동기화하는 방법은 무엇입니까?
내가 누락된 것은 각 서버에 로그인하는 데 키(동일 키)가 필요할 때 (ssh를 통해) rsync를 촉진하는 방법입니다.
이것은 내가 얻은 가장 가까운 것입니다:
ssh -i ~/path/to/pem/file.pem -R localhost:50000:SERVER2:22 ubuntu@SERVER1 'rsync -e "ssh -p 50000" -vur /home/ubuntu/test localhost:/home/ubuntu/test'
초기 연결이 제대로 작동하는 것 같지만 SERVER2에 대한 키와 사용자 이름을 지정하는 방법을 알 수 없는 것 같습니다.
어떤 아이디어가 있나요?
답변1
SSH 에이전트를 사용하는 것이 좋습니다. 이렇게 하면 키 쌍만 필요하고 개인 부분은 워크스테이션에 보관됩니다. 다른 서버에 복사하거나(그 자체로는 나쁜 생각임) 특정 서버에 대한 추가 키 쌍을 만들 필요가 없습니다.
SSH 에이전트를 시작하는 방법은 여러 가지가 있습니다. 자세한 내용을 읽을 수 있습니다.거기. 이것은 가장 간단합니다.
eval ($ssh-agent)
그런 다음 에이전트에 키를 추가하세요.
ssh-add /path/to/private.key
키가 보호되어 있는 경우 비밀번호를 입력하라는 메시지가 표시됩니다. 추가한 후에는 메시지를 표시하지 않고 공개 섹션이 있는 서버에 연결할 수 있습니다.
또한 이 서버에서 다른 서버로 계속 SSH를 통해 연결할 수 있으며 프록시는 다음과 같은 경우 추가로 사용자를 인증합니다.프록시 전달 허용SSH 서버 옵션은 기본적으로 기본값인 yes로 설정되어 있습니다.
그럼 프롤로그입니다 :)
이제 귀하의 사건으로 돌아가십시오. 서버 구성이 포트 전달을 금지하지 않는 한 방법은 다음과 같습니다.
- 프록시를 사용하여 SERVER2에 연결할 수 있는지 확인하세요.
ssh ubuntu@SERVER1 'echo Hi from $(hostname)'
- SERVER1에서 SERVER2로의 프록시 전달이 정상적인지 확인하세요.
ssh -t ubuntu@SERVER1 ssh SERVER2 'Hi from $(hostname)'
- 포트 전달을 통해서만 연결 시작
ssh -R localhost:50000:SERVER2:22 -Nv
해당 터미널 창을 열어 두십시오.
- 새 터미널 창에서 SERVER1에 로그인하고 거기에서 포트가 요청대로 전달되는지 확인합니다.
[SERVER1]ssh -p 50000 localhost 'echo Hi from $(hostname)'
SERVER2의 안녕하세요가 표시됩니다.
위의 4단계가 모두 효과가 있으면 rsync 명령을 실행할 수 있습니다. 그냥 생략하세요.-i part
답변2
세 단계:
모든 것이 연결된
~/.ssh/config
on을 만듭니다 . 예를 들면 다음과 같습니다.SERVER1
SERVER2
Host SERVER2 Port 50000 User user2 Hostname localhost IdentityFile ~/path/to/pem/file.pem
SERVER2
매개변수 없이 호스트에 연결해 보십시오 (SERVER1
포트 전달을 시작한 후부터).ssh SERVER2 # works?
그렇지 않은 경우 이를 추가
-vvv
하고 무엇이 잘못되었는지 조사하십시오.rsync 명령을 실행합니다:
ssh -i ~/path/to/pem/file.pem -R localhost:50000:SERVER2:22 ubuntu@SERVER1 \ 'rsync -vur /home/ubuntu/test SERVER2:/home/ubuntu/test'
이 방법으로 수행하려면 에 인증 키가 있어야 합니다 SERVER1
. 컴퓨터에서 개인 키를 복사하는 것보다 새 키를 만드는 것이 더 좋습니다.