그래서 .ssh를 사용하여 SSH를 통해 연결된 원격 호스트에서 내 Mac의 로컬 폴더로 파일을 다운로드해 보았습니다 rsync
. 내가 사용하는 명령은 다음과 같습니다
$ rsync --progress -avz -e "ssh [email protected] -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/
프롬프트에는 다음과 같은 내용이 나와 있습니다.
[email protected]'s password: [I typed the password here]
bash: 1.2.3.4: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.3]
1.2.3.4
원격 호스트 주소가 명령으로 해석되는 게 이상한 것 같은데요? ! 어떻게, 왜 이런 일이 일어났는지 잘 모르겠습니다. 예상 결과를 얻고 파일 복사를 시작하려면 명령을 어떻게 업데이트해야 합니까?
답변1
-e 플래그에 ssh 명령의 user@host 부분을 포함하고 싶지 않을 것이라고 확신합니다. 노력하다
rsync --progress -avz -e "ssh -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/
답변2
이 명령에서 (또는) 옵션 과 함께 사용하면 ssh
원격 호스트를 이름으로 언급할 필요가 없습니다. 이는 명령에서 소스 사양의 일부이기 때문입니다.-e
--rsh
rsync
귀하의 경우에는 사용하기에 충분할 것입니다
rsync --progress -avz -e "ssh -i ~/.ssh/keyFile" [email protected]:/path/to/files/ ~/Downloads/
rsync
-e
소스 경로와 함께 제공된 명령이 실행됩니다. 다른 것을 사용하면 -v
다음과 같이 보일 것입니다.
opening connection using: ssh -i "~/.ssh/keyFile" [email protected] -l root 1.2.3.4 rsync --server --sender -vvlogDtpre.iLfxC . /path/to/files/
1.2.3.4
여기서는 사용자로서 원격 호스트에서 실행되는 명령으로 해석되는 것을 볼 수 있습니다 root
.실제명령줄 인수로 실행되어야 합니다).
rsync
파일 복사의 원본 측에서 "발신자"를 시작하고 대상 측에서 "수신자"를 시작합니다. 그런 다음 두 프로세스는 실제 데이터와 체크섬 등을 서로 전송하여 파일 복사를 수행합니다. 위에 표시된 명령은 원격 호스트에서 보낸 사람을 시작(시도)하는 데 사용되는 명령입니다 ssh
. 등은 rsync
이 목적으로 사용되는 --server --sender
내부 명령줄 플래그 입니다. rsync
매뉴얼 rsync
에는 기본적으로 "이 옵션을 직접 사용하지 마십시오"라고 나와 있습니다.
rsync
귀하의 경우, 원격 호스트의 발신자와 통신하는 수신자(로컬 실행)에 문제가 있음 을 오류 메시지에서 확인할 수 있습니다 . 이는 보낸 사람이 올바르게 시작되지 않았기 때문이며 이는 잘못된 ssh
명령으로 인해 발생합니다.