SSH através de um proxy SOCKS? (cliente = OpenSSH OS X)

9

Não tenho certeza se essa pergunta é mais adequada aqui no ServerFault ou no SuperUser. Pensando nisso logicamente eu acho que esta é uma questão de sysadmin, então estou colocando aqui, e se os mods acham que deveria se mover, então peço desculpas por adivinhar errado!

De qualquer forma - eu tenho um servidor fora do site, e estou preso em um IP privado sem acesso à rede, exceto através de um proxy HTTP ou um proxy SOCKS 4/5. Estou executando o OS X e gostaria que o comando ssh do terminal funcionasse de alguma forma através de um desses dois proxies para sair do servidor remoto. A porta SSH no servidor remoto não é padrão, embora eu duvide que isso faça muita diferença.

    
por Bart B 26.09.2011 / 18:22

3 respostas

3

Eu sei que este é um post antigo, mas acho que essa resposta ainda será útil:

Você pode fazer isso facilmente através de um proxy SOCKS com o NetCat (nc). Em seu ~ / .ssh / config você apenas adiciona duas linhas, uma que especifica quais hosts você deseja fazer proxy, e uma linha para dizer como se conectar via nc. Assim:

~ / .ssh / config: (testado no OSX, deve funcionar no Linux também)

Host 10.*
    ProxyCommand nc -X 5 -x PROXY_HOST:1080 %h %p

Substitua "PROXY_HOST" pela coisa certa para a sua configuração.

Isso faz o ssh, em vez de abrir diretamente uma conexão TCP para o host de destino (neste caso, qualquer coisa que comece com "10." - pode ser um IP ou nome de host), execute o comando "nc" com o especificado opções para realmente estabelecer a conexão TCP, e o SSH faz o resto de lá. Muito útil.

"5" é a versão SOCKS, "1080" é a porta proxy, "% h" O SSH é substituído pelo host que você digitou na linha de comando e o "% p" SSH é substituído pela porta da linha de comando ( ou o padrão 22).

    
por 03.02.2016 / 00:33
6

Sim, isso pode ser feito. Veja este site por um exemplo.

Basicamente, você usa o seu ~/.ssh/config flle local (ou /etc/ssh/ssh_config se precisar que ele seja todo o sistema) para especificar uma diretiva ProxyCommand para os hosts que você precisa passar pelo proxy para obter.

Você também pode usar nc (que vem com o OS X) em vez do software mencionado no site.

Consulte o ssh_config(5) e nc(1) man pages para informações adicionais.

    
por 26.09.2011 / 18:38
1

Um pouco atrasado, mas note que você pode usar as outras respostas aqui no próprio comando SSH com o sinalizador -o. Isso foi útil para mim, já que eu posso ou não precisar usar o proxy (dependendo do escritório em que estou), portanto, não quero realmente editar meus arquivos de configuração ssh.

ssh -o "ProxyCommand nc -X 5 -x myproxy:myproxyport %h %p" [email protected]
    
por 09.05.2017 / 18:01