두 네트워크 사이의 SCP


12

동일한 네트워크에 연결되어 있지 않은 두 컴퓨터간에 파일을 전송해야합니다. 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에 제공 할 수 있습니까?

그건 그렇고, 세 번째 컴퓨터는 사자가 달린 Mac이고 두 번째 컴퓨터는 데비안을 실행합니다.

답변:


3

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

원격 컴퓨터 ( "원격")에서 로컬 컴퓨터 ( "로컬")로 파일을 전송하려는 경우 로컬 컴퓨터에서 다음을 입력하여 세 번째 컴퓨터 ( "게이트웨이")를 통해 터널을 설정하십시오.

ssh -fNL 12345:remote:22 gatewaylogin@gateway

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

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

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

위의 방법은 원격 네트워크가 안전한 경우에는 문제가 없지만, 안전하지 않은 경우 로컬과 게이트웨이 사이에 터널을 설정하고 게이트웨이와 원격 사이에 다른 터널을 설정해야합니다 (두 개의 포트를 공통 포트 번호로 연결).


21

scp 옵션 -3은 당신이 찾고있는 것이어야합니다. 귀하의 예를 들어 보려면 :

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

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


내 SCP는 구현하지 않습니다 -3 내가 SCP를 얻을 COMAND을 실행할 때 : 잘못된 옵션 - 3 사용 : SCP [-1246BCEpqrv] ...
JorgeO

1
맞습니다. -3은 최신 버전의 OpenSSH에서만 사용할 수 있으며 데비안이 아직 구현했는지 확실하지 않습니다.
Rilindo

아 죄송합니다. 버전 요구 사항에 대한 답변을 업데이트했습니다.
andol

1

당신은 이것을 시도 할 수 있습니다 :

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

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


&& 연산자에 대해 몰랐습니다. 사용하는 것보다 낫다;
JorgeO

이것은 첫 번째 예에서 사용했던 원래의 질문과 같은 기술입니다 (컴퓨터 A에서 로컬 컴퓨터로 복사 한 다음 로컬 파일을 컴퓨터 B로 복사).
Jason C
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.