이중 서버 홉을 통한 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.