두 네트워크 간 SCP

두 네트워크 간 SCP

동일한 네트워크에 연결되어 있지 않은 두 컴퓨터 간에 파일을 전송해야 합니다. VPN을 통해 두 네트워크를 모두 볼 수 있는 세 번째 컴퓨터가 있습니다.

세 번째 컴퓨터에서는 다음을 수행할 수 있습니다.

scp root@firstcomputer:./file ./

그리고 다음 문장으로 전송을 마무리합니다.

scp ./file root@secondcomputer:./

하지만 다음과 같이 단 한 줄로는 할 수 없습니다.

scp root@firstcomputer:./file root@secondcomputer:./

오류 응답은 다음과 같습니다

ssh: connect to host secondcomputer port 22: No route to host
lost connection

아마도 첫 번째 컴퓨터가 두 번째 컴퓨터를 볼 수 없기 때문일 것입니다. SCP 프로그램을 실행하는 기계가 두 컴퓨터를 모두 볼 수 있는 유일한 기계라는 사실을 다루는 매개변수를 SCP에 제공할 수 있습니까?

그런데 세 번째 컴퓨터는 Lion이 설치된 Mac이고 첫 번째와 두 번째 컴퓨터는 Debian을 실행하고 있습니다.

답변1

SSH 터널을 사용할 수 있어야 합니다.

원격 컴퓨터("원격")에서 로컬 컴퓨터("로컬")로 파일을 전송하려고 한다고 가정하고 로컬 컴퓨터에 다음을 입력하여 세 번째 컴퓨터("게이트웨이")를 통해 터널을 설정합니다.

ssh -fNL 12345:remote:22 gatewaylogin@gateway

그런 다음 이 터널에서 SCP 명령을 무제한으로 실행할 수 있습니다(아직 로컬 컴퓨터에서 입력 중).

scp -P 12345 remotelogin@localhost://path/to/remote/file /local/path/where/you/want/file

방금 내 네트워크에서 이것을 테스트했는데 완벽하게 작동했습니다.

위의 방법은 원격 네트워크가 안전하다면 괜찮지만, 안전하지 않다면 로컬과 게이트웨이 사이에 터널을 설정하고 게이트웨이와 원격 사이에 또 ​​다른 터널을 설정하여 둘을 공통 포트 번호로 연결해야 합니다.

답변2

scp 옵션 -3이 당신이 찾고 있는 것이어야 합니다. 귀하의 예에 넣으려면 :

scp -3 root@firstcomputer:./file root@secondcomputer:./

-3 옵션은 2011년 초에 출시된 OpenSSH 5.7에서 처음 도입되었습니다.

답변3

다음을 시도해 볼 수 있습니다.

root@firstcomputer:./file /tmp && scp /tmp/file root@secondcomputer:./ && rm /tmp/file

그러면 파일이 세 번째 컴퓨터의 /tmp 디렉터리에 복사되고, 성공하면 해당 파일을 보조 컴퓨터에 다시 복사한 다음 자체적으로 정리됩니다. && 연산자를 사용하고 있으므로 각 명령은 이전 명령이 성공한 경우에만 실행됩니다.

관련 정보