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.