A primeira possibilidade é óbvia (observe a opção -t ):
ssh -t -i cloudkey -L 6000:localhost:6001 [email protected] -p 9000 \
"ssh -D 6001 -p 6666 localhost -l dancloud"
Com ProxyCommand é mais complicado à primeira vista, mas conceitualmente você precisa apenas de um encaminhamento ( netcat versão não é mais recomendado, usando a opção -W é mais elegante):
Host proxy
Hostname 54.152.188.55
User admin
IdentityFile cloudkey
Host target
Hostname localhost
Port 6666
User dancloud
DynamicForward 6000
ProxyCommand ssh -W %h:%p proxy
e, em seguida, conecte apenas usando ssh target (veja ... agora você nem precisa de um script bash:)).
Explicação: O segundo ssh também está sendo executado em seu computador e, portanto, o soquete de encaminhamento dinâmico (proxy SOCKS) é criado diretamente no seu computador.
Sobre as senhas, não é algo aconselhável (as senhas devem ser secretas ), mas pode funcionar com sshpass na frente do ssh apropriado .
A página de manual para ssh explica a opção -W como:
-Whost:portRequests that standard input and output on the client be forwarded to host on port over the secure channel. Implies
-N,-T,ExitOnForwardFailureandClearAllForwardings. Works with Protocol version 2 only.
Em combinação com ProxyCommand , ele se conecta ao hostname solicitado e, em seguida, fornece basicamente uma versão incorporada de netcat (conecta o IO padrão ao par host : port (o argumento).