O SSH normalmente fornece um shell remoto acessível com segurança em um terminal local. O comando com a opção -L
parece oferecer o recurso de encapsulamento seguro para as portas nas duas extremidades.
Suponha que o comando seja
ssh -L 5901:127.0.0.1:5901 user@remoteIP
Na opção acima, há duas instâncias de 5901
.
Na opção acima, a primeira instância de 5901
determina a configuração na máquina que é o LOCAL HOST, o que não quer dizer "localhost". O LOCAL HOST é a máquina que está executando o comando ssh
. Na opção acima, o restante da string, 127.0.0.1:5901
, determina a configuração na máquina que é o REMOTE HOST em remoteIP
.
Um aplicativo no REMOTE HOST pode acessar o túnel seguro via 127.0.0.1:5901, onde o 127.0.0.1 é explícito, de modo que somente um aplicativo na mesma máquina terá permissão para acessar o túnel.
Um aplicativo no LOCAL HOST pode acessar o túnel seguro via 127.0.0.1:5901, onde o 127.0.0.1 é por padrão. Se GatewayPorts for 'yes', então, um *
pode ser especificado na opção para indicar que qualquer host (com qualquer IP) pode acessar o túnel seguro. A forma do comando seria então
ssh -L *:5901:127.0.0.1:5901 user@remoteIP
Uma ilustração com 4 hosts:
App Host A <---> Host Running 'ssh' <---> Host At 'remoteIP' <---> App Host B
O Anfitrião de Aplicações A pode estar no mesmo computador que o Anfitrião a Executar ssh
.
O Host de Aplicativo B pode estar na mesma máquina que o Host em remoteIP
.
Adendo: Observe que este comando faz parecer que a porta 5901 está sendo usada, mas na verdade o túnel é o substituto da porta 5901 em ambas as extremidades. Assim, você pode desativar a porta 5901. Na verdade, se nenhum outro for necessário, você poderá desabilitar todas as portas, exceto a que está sendo usada por ssh
, que é por convenção 22.