Isso é muito mais complicado do que precisa ser: -)
Inicie o túnel:
ssh -f -N -D 9999 -M -S /tmp/ssh_tunnel_%h.sock -o ExitOnForwardFailure=yes $SSH_HOST && \
echo "ssh tunnel started successfully" || \
echo "ssh tunnel failed to start"
Pare o túnel:
ssh -S /tmp/ssh_tunnel_%h.sock -O exit $SSH_HOST
.
Isso é tudo que você precisa fazer. Se você quiser os detalhes, pule abaixo.
Para sua segunda pergunta, a IP. Não, o seu IP não muda. Tudo o que você fez foi criar um proxy SOCKS através do host remoto. Seu sistema não usa automaticamente este proxy, a menos que você o diga.
Explanação do SSH
Args para iniciar o túnel:
-f
: informa o ssh ao próprio plano de fundo. Ele só fará o seu próprio background se for iniciado com sucesso (coopera com o argumento -o
abaixo).
-o ExitOnForwardFailure=yes
: Isso diz ao ssh para sair se ele não puder configurar o proxy SOCKS.
-N
Não execute um comando. Nós só queremos encapsular, não fazer nada no host remoto.
-D 9999
: Seu proxy SOCKS.
-M
: Isso é necessário para o argumento -S funcionar aqui.
-S /tmp/ssh_tunnel_%h.sock
: Isto diz para usar o /tmp/ssh_tunnel_HOSTNAME.sock para seu soquete de controle. A opção -M
informa que o ssh precisa configurar este soquete e não emitir comandos para outro ssh que já esteja escutando no soquete. Você pode usar esse soquete para configurar túneis adicionais depois que o ssh já estiver em execução. O %h
usa o nome do host do host remoto como parte do nome do arquivo.
Args para parar o túnel:
-S /tmp/ssh_tunnel_%h.sock
: Isso deve ser óbvio. No entanto, como não emitimos um -M, isso significa que o ssh deve se conectar ao soquete que já existe e dizer o que fazer, em vez de fazer algo sozinho.
-O exit
: Isso faz parte do -S
. Dizemos ao ssh que escuta na tomada para sair.
O $SSH_HOST
ainda é necessário aqui. Mesmo se você fosse especificar um caminho de soquete absoluto, sem usar %h
no nome do arquivo, o ssh ainda desejaria que um host remoto fosse especificado. É por isso que eu coloquei o %h
nos argumentos. Poderia também usá-lo se o ssh pedisse o host e mantivesse as coisas organizadas.