단일 스크립트를 사용하여 2개의 서버(소스 -> 서버 A -> 서버 B) 간에 파일을 전송하는 방법입니다.

단일 스크립트를 사용하여 2개의 서버(소스 -> 서버 A -> 서버 B) 간에 파일을 전송하는 방법입니다.

나는 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 - dirdir의 tar 파일을 stdin으로 복사
  • ssh serveraservera에 로그인하세요.
  • cd dest ; tar xf - dest 디렉토리의 표준 입력 파일에서 추출됩니다.

관련 정보