Nesta resposta, passo por um exemplo concreto. Basta substituir os nomes das máquinas, nomes de utilizador e palavras-passe dos computadores pelos seus.
Declaração de problema
Vamos assumir que temos a seguinte topologia de rede:
our local computer <---> server 1 <---> server 2
Por uma questão de concretude, vamos assumir que temos os seguintes nomes de hosts, nomes de utilizador e palavras-passe dos computadores:
LocalPC <---> hostname: mit.edu <---> hec.edu
username: bob username: john
password: dylan123 password: doe456
Objectivo: queremos criar um proxy SOCKS que ouça no porto 9991 do LocalPC de modo a que cada vez que uma ligação no LocalPC é iniciada a partir do porto 9991 passe pelo mit.edu e depois pelo hec.edu.
Exemplo de caso de uso: hec.edu tem um servidor HTTP que só está acessível em http://127.0.0.1:8001 , por razões de segurança. Gostaríamos de poder visitar http://127.0.0.1:8001 abrindo um web browser em LocalPC.
Configuração
Em LocalPC, adicione em ~/.ssh/config:
Host HEC
HostName hec.edu
User john
ProxyCommand ssh bob@mit.edu -W %h:%p
Depois, no terminal de LocalPC, corra:
ssh -D9991 HEC
Pedir-lhe-á a password de bob em mit.edu (ou seja dylan123), depois pedir-lhe-á a palavra-passe de john em hec.edu (ou seja, doe456 em 9991), LocalPC).
Nessa altura, o proxy SOCKS está agora a funcionar no porto LocalPC do ~/.ssh/config.
Por exemplo, se quiser visitar uma página web em HEC usando o proxy SOCKS, pode fazer no Firefox:
Algumas observações:
- em
-D9991, ssh é o nome da ligação: pode alterá-la para o que quiser.
- O
9991 diz ao &007 para configurar um proxy SOCKS4 na porta &007.