Como eu automatizo a abertura do Firefox em um túnel ssh?

1

Minha universidade tem acesso a alguns periódicos acadêmicos que não posso acessar em casa. Para poder baixar documentos enquanto estou ausente, meu processo atual é:

  • Crie um túnel ssh para o meu computador da universidade com ssh -D 12345 [email protected]

  • Inicie uma nova instância do Firefox usando um perfil separado que configurei para usar esse túnel como um proxy: firefox -P uniprofile -no-remote . Desta forma eu ainda posso ter outras janelas abertas que não enviam tráfego para o meu uni.

  • Quando terminar de baixar meus documentos, sairei do firefox e fecharei minha conexão ssh.

O que não consigo descobrir é como incluir tudo isso em um único script para criar um iniciador de área de trabalho que configure o túnel (solicitando a senha), inicie o Firefox quando isso for feito e, em seguida, fecha a conexão ssh quando fecho a janela do firefox. Minha primeira tentativa foi simplesmente criar um script com o comando ssh seguido pelo comando firefox, mas o que acabou acontecendo é que o firefox só é iniciado depois que eu fecho a conexão ssh.

#!/bin/bash
set -e
ssh -D 12345 [email protected]
firefox -P uniprofile -no-remote
#...and at this point find a way to close the ssh connection...
    
por hugomg 23.02.2015 / 02:12

2 respostas

3

Isso não foi testado (já que não uso GUIs), mas tente isto:

#!/bin/bash

# From this answer http://unix.stackexchange.com/a/29949/82289
[email protected]
ssh -f -N -D 12345 -M -S /tmp/ssh_tunnel_%h.sock -o ExitOnForwardFailure=yes $SSH_HOST && \
echo "ssh tunnel started successfully" || \
echo "ssh tunnel failed to start"

# Launch firefox
firefox -P uniprofile -no-remote

# We should only get here after firefox closes
# Close the ssh tunnel socket
ssh -S /tmp/ssh_tunnel_%h.sock -O exit $SSH_HOST
# End shell-script

As duas bandeiras -f e -N são o que eu acho que você quer ( do homem ssh ).

-f

Requests ssh to go to background just before command execution. This is useful if ssh is going to ask for passwords or passphrases, but the user wants it in the background. This implies -n. The recommended way to start X11 programs at a remote site is with something like ssh -f host xterm.


-N

Do not execute a remote command. This is useful for just forwarding ports (protocol version 2 only).

    
por 23.02.2015 / 03:13
0

Como alternativa, se você instalou o firefox nessa máquina, você poderia abrir o firefox e exibi-lo em sua máquina da seguinte forma:

EXECUTAR:

export DISPLAY=:0.0; 
ssh -Y [email protected]

Então, quando a conexão SSH estiver configurada, basta executar o firefox nessa máquina:

firefox
    
por 23.02.2015 / 03:31