이중 서버 홉을 통한 SFTP


15

로컬 컴퓨터에서 액세스 할 수없는 것보다 SFTP 서버의 파일에 액세스 할 수있는 방법을 찾으려고합니다. 현재 원격 서버 (최종 SFTP 서버가 수락 할 특정 IP 블록에 있음)로 SSH를 보낸 다음 SFTP에서 대상 서버로 SSH해야합니다. 거기에서 내가 get관심있는 파일을 중개인 서버에 드롭하여 Samba 공유 또는 direct를 통해 파일을 가져올 수 있습니다 scp. 나는 반대로 파일을 중개자에게, SSH로 보낸 다음 SFTP를 대상 put으로, 적절한 폴더로 파일을 드롭하는 역으로 작업합니다 .

나의 목표는 이것을 줄이는 것입니다. 불행한 제한 사항은 내 컴퓨터가 Windows (KitTy 및 / 또는 Cygwin 사용)이며 중개자 서버 (또는 대상 서버)를 어떤 식 으로든 수정할 수 없다는 것입니다. 작동하고 무료 인 한 명령 줄 또는 GUI 프로그램을 사용하려고합니다.

어떤 아이디어?

답변:


24

본질적으로 GUI 또는 기타 편의가없는 경우 :

ssh -o ProxyCommand='ssh myfirsthop nc -w 10 %h %p' mydestination

기본적으로 ~ / .ssh / config 구성 파일을 편집하여이 기본값을 만들 수 있습니다.

Host mydestination, mydest2, mydest3
ProxyCommand ssh myfirsthop nc -w 10 %h %p

이것은 당신이 할 수 있습니다

ssh mydestination
scp mydest2:file.txt ./
scp file.txt mydest3:/tmp/

물론, 이런 종류의 마술로 쉽게 할 수 있습니다

mkdir -pv /tmp/mydest3tmp          # create mountpoint
sshfs mydest3:/tmp /tmp/dest3tmp/  # mount :)

Windows에서는 (IIC) PLINK (Putty suite)와 함께 제공되는 WinSCP를 사용합니다. ssh config파일 의 기본 위치 가 다르면 (구글을 사용해야합니다) 다소 비슷하게 작동한다고 확신합니다.

이 작업을 수행하는 데 필요한 유일한 것은 nc중간 서버 (첫 번째 홉)의 'netcat ( )'입니다. linux / UNIX의 유비쿼터스 툴입니다 [1]; 처음에 복사 할 수 있으면 정적으로 링크 된 버전을 작성하는 것이 매우 쉽습니다.

[1] 몇 가지 맛이 있으므로 -w 옵션을 다르게 떨어 뜨리거나 철자를 입력해야 할 수도 있습니다.


1
당신은 이것이 얼마나 나를 행복하게했는지 전혀 몰랐습니다. :) 완벽합니다!
josh.trow

@ josh.trow : 아뇨,하지만 당신이 말해줘서 기뻐요 :) 언제라도
sehe

@ josh.trow가 이미 찾은 것처럼 WinSCP에는 터널링 기능이 내장되어 있지만 (다른 답변 참조) 외부 응용 프로그램에서 실제로 터널 설정을 사용해야하는 경우에는 다음과 같은 지침이 있습니다. winscp.net/eng/docs/ guide_tunnel
Martin Prikryl

9

나는 @sehe와 @Jakub 없이는 그것을 찾지 못했기 때문에 이것을 허용 된 대답으로 설정하지 않을 것이지만 여기에 내가 찾은 것이 모든 것을 단순화합니다 ...

WinSCP에는 SSH 터널이 내장되어 있습니다. 이 기능이 언제 도착했는지 모르지만 어떻게 든 전에는 눈치 채지 못했습니다.

WinSCP 터널 설정



filezilla에서도 작동합니다!
Hayden Thring

이 기능은 단일 터널 만 허용합니다 ... 어떻게 2 차 터널을 추가합니까?
zeetit

@zeetit 그런 다음 외부 터널을 사용해야합니다. 모든 터널링 옵션은 터널링에 대한 WinSCP 안내서에 설명되어 있습니다 .
Martin Prikryl 2018 년

2

내 제안 중 하나는 퍼티 (Windows 상자에서)를 사용하여 양말 프록시를 만든 다음 SFTP 클라이언트 (예 : Filezilla sftp)를 프록시하는 것입니다.

그런 식으로 특별한 작업을 수행하지 않아도됩니다. 퍼티 socks5 프록시를 켜고 filezilla를 켜고 파일을 대상 서버로 ftp로 보내십시오.

(you ==socks5 proxy==> middle server) ==> destination server

다른 문제를 해결하는 것 같습니다. 더 어려운 문제입니다. OP의 문제는 최종 대상을 클라이언트에서 라우팅 할 수 없다는 것입니다. 아웃 바운드 SSH 트래픽이 정상입니다. ( 귀하의 솔루션이 프록시를 통해 SSH 트래픽을 '터널'하는 데 필요하다고 생각하십니까? )
sehe

@sehe .. 무엇? SSH socks 5 프록시 (중간 박스에 SSH 터널)를 설정 한 다음 중간 서버로 가장하여 SFTP 트래픽을 대상 박스에 프록시 처리하면됩니다. 다른 어떤 문제를 해결하고 있습니까?
Jakub
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.