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

11

Não tenho certeza se essa pergunta é mais adequada aqui no ServerFault ou no SuperUser. Pensando nisso logicamente, eu acho que essa é uma pergunta de administrador de sistema, então eu a coloco aqui, e se os mods pensam que deve se mover, peço desculpas por supor errado!

De qualquer forma - eu tenho um servidor externo e estou preso a um IP privado sem acesso à rede, exceto por meio 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 para o servidor remoto. A porta SSH no servidor remoto não é padrão, embora eu duvide que isso faça muita diferença.

Bart B
fonte

Respostas:

5

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 proxy, e uma linha para informar como se conectar via nc. Igual a:

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

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

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

Isso faz com que o ssh, em vez de abrir diretamente uma conexão TCP com o host de destino (nesse caso, qualquer coisa que comece com "10." - possa ser um nome de IP ou host), execute o comando "nc" com as opções especificadas para realmente estabeleça a conexão TCP e o SSH fará o resto a partir daí. Muito conveniente.

"5" é a versão do SOCKS, "1080" é a porta do proxy, "% h" SSH substitui o host digitado na linha de comando e "% p" SSH substitui a porta da linha de comando (ou o padrão 22)

bgp
fonte
7

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

Basicamente, você usa seu ~/.ssh/configarquivo local (ou /etc/ssh/ssh_configse precisar que ele seja de todo o sistema) para especificar uma ProxyCommanddiretiva para os hosts que você precisa passar pelo proxy para acessar.

Você também pode usar nc(que acompanha o OS X) em vez do software que eles mencionam nesse site.

Consulte as páginas de manual ssh_config(5)e nc(1)para obter informações adicionais.

voretaq7
fonte
1
Infelizmente, a página para a qual você está vinculado está desatualizada e o link para a versão corrigida do binário está morto - erro 404.
Bart B
1
Oh, como isso é constrangedor - eu encontrei um link para um comando proxy de trabalho que ainda compila no OS X 10.7 Lion e ainda funciona, NO MEU PRÓPRIO BLOG! Em minha defesa, o posto tem 6 anos, mas ainda assim. Instruções de trabalho aqui: bartbusschots.ie/blog/?p=184
Bart B
2
@BartB "Qualquer coisa que você escreveu mais de uma semana atrás também pode ter sido escrita por outra pessoa." - É um axioma de programação, mas também é válido para administradores de sistemas e blogueiros.
precisa saber é o seguinte
3

Um pouco tarde, mas observe 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), então não quero editar meus arquivos de configuração ssh.

ssh -o "ProxyCommand nc -X 5 -x myproxy:myproxyport %h %p" [email protected]
EdmCoff
fonte