동일한 네트워크에 있지 않은 두 서버 간 scp


13

두 개의 다른 VPN 연결로 액세스 할 수있는 두 개의 서버가 있습니다. 내 컴퓨터에서 두 VPN을 동시에 작동하게했습니다 (약간의 라우팅 규칙).

scp <remote1>:some/file <remote2>:destination/folder랩톱 터미널에서 작업하고 싶습니다 . 그러나 이것을 시도하면 remote1에서scp 호출 된 명령이 동일한 네트워크에 있지 않기 때문에 remote2를 찾을 수 없습니다 . 랩탑을 라우터로 명령 을 강제 로 통과시킬 수 있습니까?scp

Nautilus (서버, 두 서버에 연결 한 다음 복사하여 붙여 넣기)로 시도하면 작동하지만 터미널에서 수행하고 싶습니다.


remote1remote2 모두에 연결되는 시스템입니다 . remote1remote2에 액세스 할 수 없다는 오류가 있습니까?
Jan

예, 오류는 ssh입니다. 호스트 이름 <remote2>을 (를) 확인할 수 없음 : 이름 또는 서비스를 알 수 없음 연결 끊김
Danduk82

<remote2>에 직접 IP 주소를 사용하려고하면 잠시 후 연결이 끊어집니다 (행 아웃).
Danduk82

그런 다음 remote2에 연결할 수없는 시스템이라고 생각합니다 . 아마도 VPN 연결이 시간 초과되거나 비정상적인 것일 수 있습니다.
Jan

DNS가 작동하더라도 작동하지 않습니다. 정말 scp 명령의 시도가 사이의 연결 실행하는 느낌이 REMOTE1REMOTE2를 직접 REMOTE1을 .
Danduk82

답변:


34

최신 버전의 scp에는 -3 옵션이 있습니다.

-삼

Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts

큰! 정확히 내가 필요한 것. 감사합니다
Danduk82

1
위대한 발견, 나는 그것을 몰랐다!
Jan

9

보다 유연성이 더 필요한 경우 scp -3일반 ssh파이프가 재미 있습니다.

이는 로컬 컴퓨터를 통해 스트림을 리디렉션하는 것과 같습니다.

ssh sourceRemote 'cat /path/to/sourceFile' \
| ssh destinationRemote 'cat > /path/to/destinationFile'

그런 다음 언제든지 여러 중간 시스템을 연결하거나 전송되는 파일의 로컬 복사본을 라우팅 할 때 스트림 리디렉션을 추가 할 수 있습니다.


2
소스 시스템이 pv설치되어 있고 첫 번째 시스템 을 교체하면 멋진 진행 표시 줄이 나타납니다 cat.
liori

6

@Anko의 답변을 확장하면 tar여러 파일에 사용할 수 있습니다 .

ssh -q user@sourcehost 'cd /source/path; tar -czf - files...' | \
ssh -q user@desthost 'cd /dest/path; tar -xzf -'

압축은 전적으로 선택 사항입니다. 데이터가 압축률이 높거나 오버 헤드를 보장 할만큼 크지 않을 수 있습니다. 버전이있는 경우 tar지원하지 않습니다 -z통해 스위치, 파이프 gzip -cgzip -dc각각.

추신 : tar추출시 슬래시를 제거하지 않는 버전을주의하십시오 (즉, 제공된 경우 절대 경로 이름에 쓰십시오).

편집 : -e none의사 터미널이 할당되지 않기 때문에 파이프에는 필요하지 않습니다.


1
ssh-C스트림 압축을 활성화 하는 플래그가 있습니다. man-page 에 따르면 동일한 알고리즘을 사용합니다 gzip. 매뉴얼 페이지는 또한 언제 사용할 것인지를 설명합니다. "모뎀 회선 및 기타 느린 연결에서는 압축이 바람직하지만 빠른 네트워크에서는 속도가 느려집니다."
Anko

4
@Anko, -C여기서 사용하는 문제 는 로컬 컴퓨터가 데이터를 압축 해제하고 다시 압축해야한다는 것입니다. 말하는 tar압축 된 데이터를 처리하지 않고 직선 파이프를 통해 전달되는 압축 방법을 수행.
CJM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.