SSH 터널을 통해 SCP


1

scp를 통해 원격 컴퓨터 (W)에서 개인 호스트 컴퓨터 (P)로 파일을 복사하고 싶습니다. 머신 W에 직접 연결할 수 없기 때문에 포트 22가있는 2 개의 다른 머신에서 ssh 터널을 사용합니다.하고 싶은 것은 머신 W에 로그인하여 scp 파일을 머신 P로 전송하는 것입니다. P가 네트워크에 숨겨져 있으므로 컴퓨터 W에 로그인 할 때 원격 호스트 IP를 지정할 수 없습니다. 이에 대한 해결책이 있습니까 ?? 컴퓨터 P에 로그인 할 때이 작업을 수행하지만 파일을 복사 할 때마다 파일 경로를 기억하고 싶지 않습니다.


그래서 당신의 설정은 다음과 같습니다? W -- ? -- ? -- P
Janos Pasztor

예 exacty, 내가 포트 포워딩을 할 수있는 이러한 컴퓨터 사이에이 기계가 문제가 W 내 기숙사의 라우터의 일종 .. 뒤에 숨겨져 있다는 것입니다
jruebsam

P 앞에서 라우터 / 호스트에 쉘 액세스 할 수 있습니까? 또는로 표시된 포트 중 하나에서 포트 전달을 수행 할 수 ?있습니까?
Janos Pasztor

나는 중간에 두 시스템에 액세스 할 수 있습니다 (그 M1과 M2를 호출 할 수 있습니다)하지만 루트로, 라우터에 대한 액세스 권한이없는, 그리고 난 예를 들어 M2에 portforward을 할 수도 있습니다
jruebsam

잠깐만, 네트워크 설정이 실제로 이런 모양입니까? W -- M1 -- R1 -- M2 -- P? 아니면 W와 P 사이의 네트워크 경로는 정확히 무엇입니까?
Janos Pasztor

답변:


1

위에서 설명한대로 설정을 확인한 후 시스템은 다음과 같습니다.

P -- R -- M1 -- M2 -- W

R은 (으) P로의 연결 만 허용하는 NAT 라우터이며 M1, 다른 방법으로는 사용할 수 없으며 연결을 설정하기 위해 모든 노드를 사용해야합니다.

해결책 1

유일한 문제는 R제어 할 수없는 라우터 이므로, W다시 연결할 수 있도록 터널을 설정해야합니다 . 가장 간단한 해결책은 PSSH 연결을 M1설정하고 역방향 포트를 전달하는 것입니다.

그런 다음에서 두 번째 SSH 터널을 설정할 수 있습니다 WM2반대 포트에 지역 패킷을 전달하는 데에 포트 포워딩 M1차례로에서 터널링 SSH 연결을 설정하는 데 사용할 수 W에를 P.

해결책 2

이제 전체 설정에 약간의 복잡성이 추가되어 오류가 발생하기 쉽습니다. 더 나은 솔루션 사이에 VPN 연결을 설정하는 것 W하고 M1, P그리고 M2사이 M1M2. 그런 다음에서 개인 주소 범위를 사용하여 라우팅을 설정할 수 WP이 세 가지 터널을 통해. 이것은 당신이 모두에 대한 루트 액세스를 필요로 작동하려면 M1M2및 외부에서 아무도 당신의 VPN 년대에 도착하지 있도록 적절한 방화벽을 설정해야합니다.

물론 다른 솔루션도 있지만 패킷이 이러한 모든 봉쇄를 통과하는 방법을 통해 생각해야 할 사항은 실제 솔루션을 도구에 맞게 조정할 수 있습니다.


답장을 보내 주셔서 감사합니다. 솔루션 1이 작동하도록했습니다. 루트 액세스 권한이 없으므로 솔루션 2가 중단됩니다. 나는 지금부터 로그인 할 수 있습니다 WPssh -l userame -p 2210 localhost. 남은 질문 하나는 정확히 어떻게 scp를 사용합니까, 즉 사용자 이름을 포트 등으로 전달하는 것입니다.이 작업을 수행하지 못했습니다. 내가 좋아하는 뭔가를 시도 scp parameter.ini -p 2210 username@localhost:~/parameter2.ini 세 암호 시도 후 나는 다음과 같은 메시지가 얻을Permission denied (publickey,keyboard-interactive). lost connection
jruebsam

1
@jruebsam : 포트에 scp대문자 P를 사용합니다 scp -P 2210 file user@localhost:~/destfile. 난 정말 왜 모르는 sshscp이 일치하지 않습니다 - 아마도 역사적인 이유로, 항상 당신이 인수 뭔가 설명 할 수없는 경우;)
MPY

@mpy : 새 오류 메시지가 나타납니다ssh: connect to host localhost port 2210: Connection refused lost connection
jruebsam

@mpy : 좋아, 실수가 어디 있었는지 모르겠지만 위와 같은 명령으로 지금 작동하는 것 같습니다
jruebsam

2

를 사용하여 원격 파일 시스템을 로컬로 마운트하는 것이 좋습니다 sshfs. 설정 세부 정보를 모르지만 예를 들어 드리겠습니다. 이 명령을 사용하여 R1 네트워크의 원격 서버 (R1)를 통해 액세스 할 수없는 두 번째 서버 (R2)로 터널을 설정했습니다.

ssh -fN -p 24222 user@R1 -L 2222:R2:22

이제 R2에 다음과 같이 연결할 수 있습니다.

ssh -p 2222 127.0.0.1

sshfsR2에서 디렉토리를 로컬로 마운트하는 데 사용할 수도 있습니다 .

sshfs -p 2222 127.0.0.1:/path/to/dir /mnt/mountpoint

나는 두 대의 원격 서버가 아닌 하나의 터널을 통해 터널을 사용하여 이것을 시도했지만 터널이 올바르게 설정되어있는 한 3 이상에서 작동하지 않는 이유는 없습니다.

이것은 정확히 요청한 것이 아니지만 해결 방법으로 사용해야합니다. 원격 파일 시스템을 로컬로 마운트하면 간단 cp하게 파일을 복사 할 수 있습니다 .


실제로이 방법을 사용하기 전에 문제는 연결이 불안정하고 종종 터미널과 파일 브라우저가
멈춘다는 것입니다.

1
@jruebsam 옵션을 사용하여 sshfs 공유를 마운트하면 autofs( 여기 참조 ) 이러한 문제를 피할 수 있어야합니다 soft.
terdon

답장을 보내 주셔서 감사합니다. autofs에 시도해 볼 수도 있다고 생각합니다. sshfs보다 실제로 더 잘 작동하기를 바랍니다.
jruebsam

sshfs그것과는 상관이 없다 ... scp당신 설정 한 번 터널 잘 작동ssh -fN
SLF

@slf는 물론 자주 할 경우 이런 종류의 일을하는 더 편리한 방법입니다.
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.