![단일 스크립트를 사용하여 2개의 서버(소스 -> 서버 A -> 서버 B) 간에 파일을 전송하는 방법입니다.](https://linux55.com/image/5807/%EB%8B%A8%EC%9D%BC%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%202%EA%B0%9C%EC%9D%98%20%EC%84%9C%EB%B2%84(%EC%86%8C%EC%8A%A4%20-%26gt%3B%20%EC%84%9C%EB%B2%84%20A%20-%26gt%3B%20%EC%84%9C%EB%B2%84%20B)%20%EA%B0%84%EC%97%90%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%A0%84%EC%86%A1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9E%85%EB%8B%88%EB%8B%A4..png)
나는 3개의 Linux 서버를 가지고 있습니다. 첫 번째는 개발 머신(바이너리를 컴파일하는 곳)이고 두 번째는 "테스트 베드"에 연결하는 데 도움이 되는 "점프박스"입니다. 여기서 바이너리를 복사해야 합니다.
지금 나는 다음과 같은 일을 하고 있습니다.
1) scp -r binabc@jumpbox:/temp/를 사용하여 내 바이너리를 devmachine에서 Jumpbox로 복사합니다.
2) Jumpbox에 로그인하고 scp -r bin abc@testbed:/bin/을 사용하여 Jumpbok에서 테스트베드로 바이너리 파일을 복사합니다.
하나의 스크립트로 위의 두 단계를 수행할 수 있는 방법이 있습니까?
이 작업을 수행하려면 암호를 파일에 저장해야 한다는 것을 알고 있지만 그래도 괜찮습니다. 언제든지 암호화를 사용할 수 있습니다.
답변1
가장 쉬운 옵션은 SSH 연결을 수행하는 것입니다공개키 인증을 통해 비밀번호가 필요하지 않습니다.. 이는 서버 간에 공개 키를 공유해야 함을 의미합니다.
그런 다음 "원본" 서버에서 유사한 명령을 사용할 수 있습니다.
cat file | ssh user@serverA "ssh user@serverB \"cat > file\""
답변2
SSH용 공개/개인 키를 사용하여 비밀번호 없는 로그인을 설정해야 합니다.
그런 다음 복사할 파일이 에 있다고 가정하고 dir
,
source$ tar cf - dir | ssh servera 'ssh serverb "cd dest ; tar xf - " '
어디
source$
프롬프트를 표시합니까?tar cf - dir
dir의 tar 파일을 stdin으로 복사ssh servera
servera에 로그인하세요.cd dest ; tar xf -
dest 디렉토리의 표준 입력 파일에서 추출됩니다.