SFTP sobre hop de servidor duplo

11

Estou tentando descobrir um método que me permita acessar arquivos em um servidor SFTP do que não consigo acessar em minha máquina local. Atualmente, eu tenho que SSH para um servidor remoto (é em um determinado bloco de IP que o servidor SFTP final aceitará), então de lá SFTP para o servidor de destino. A partir daí, eu get dos arquivos nos quais estou interessado, lançando-os no servidor intermediário, do qual posso obter os arquivos em um compartilhamento do Samba ou com um scp direto. Eu também trabalho no sentido inverso, onde coloco os arquivos no intermediário, SSH, SFTP no destino e put nas pastas apropriadas.

Meu objetivo é encurtar isso. As restrições infelizes são que minha máquina é Windows (eu uso KiTTy e / ou Cygwin) e não posso modificar o servidor intermediário (ou servidor de destino) de qualquer forma. Estou disposto a usar programas de linha de comando ou GUI, desde que funcione e seja gratuito.

Alguma idéia?

    
por josh.trow 28.06.2011 / 17:38

3 respostas

20

Em essência, sem a GUI ou outras conveniências:

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

Você pode fazer este padrão editando o arquivo de configuração, por padrão ~ / .ssh / config

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

Isso permite que você faça

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

Claro, com esse tipo de mágica você pode facilmente

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

No Windows, você usaria o WinSCP que vem com (eu acho que o IIRC) PLINK (do pacote Putty). Eu suponho que o local padrão para o arquivo ssh config seja diferente (eu teria que procurar no Google por ele), mas tenho certeza que funciona mais ou menos da mesma forma.

Note que a única coisa que você precisa para isso funcionar é 'netcat ( nc )' no servidor do meio (primeiro salto). É uma ferramenta onipresente no Linux / UNIX [1]; É muito fácil criar uma versão vinculada estaticamente que funcione se você puder copiá-la em primeiro lugar.

[1] observe que existem alguns tipos, então a opção -w pode precisar ser descartada / grafada de forma diferente

    
por 28.06.2011 / 17:48
9

Eu não vou definir isso como a resposta aceita, porque eu nunca teria encontrado isso sem @sehe e @Jakub, mas aqui está o que eu achei que simplifica tudo ...

O WinSCP tem a capacidade de usar um túnel SSH embutido. Eu não sei quando esse recurso chegou, mas eu nunca percebi isso antes de alguma forma.

    
por 28.06.2011 / 18:50
2

Uma das minhas sugestões seria criar um proxy socks usando putty (da caixa do windows) e, em seguida, fazer proxy do seu cliente SFTP sobre ele (digamos, Filezilla sftp).

Você não precisaria fazer nada especial dessa maneira, basta ativar o proxy putty socks5, ativar o filezilla e enviar os arquivos para o servidor de destino.

(you ==socks5 proxy==> middle server) ==> destination server
    
por 28.06.2011 / 18:20

Tags