SSH ProxyCommand sem netcat
O ProxyCommand é muito útil quando os hosts são apenas indiretamente acessíveis. Com netcat é relativamente estreito para a frente:
ProxyCommand ssh {gw} netcat -w 1 {host} 22
Aqui {gw} e {host} são espaços reservados para o gateway e o host.
Mas também é possível quando o netcat não está instalado no gateway:
ProxyCommand ssh {gw} 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'
O / dev / tcp é um recurso interno do bash padrão. Os arquivos não existem. Para verificar se o bash tem esse recurso embutido, execute:
cat < /dev/tcp/google.com/80
... no gateway.
Para garantir que o bash seja usado, use:
ProxyCommand ssh {gw} "/bin/bash -c 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'"
E até funciona em conjunto com o ControlMaster.
(Atualizado em 22 de outubro para incluir matar para limpar o gato de fundo) (Atualizado em 3 de março de 2011 para tornar os marcadores de espaço mais claros e explicar / dev / tcp)
100% de crédito para a Roland Schulz. Aqui está a fonte: link
veja mais informações úteis nos comentários lá.
Há também mais aqui: link
link
UPDATE : aqui está uma novidade de Marco
Em referência a um ProxyCommand em ~ / .ssh / config, onde um tem uma linha como esta:
ProxyCommand ssh gateway nc localhost %p
Marco diz:
You don't need netcat if you use a recent version of OpenSSH. You can replace nc localhost %p with -W localhost:%p.
O resultado seria assim:
ProxyCommand ssh gateway -W localhost:%p