Reading the SSH man page's description of the -L option is clear as mud. Of course 127.0.0.1 is a local address but other than that, please explain what each argument instructs the corresponding program to do
A opção -L 5901/127.0.0.1/5901
(mais comumente escrita como 5901:127.0.0.1:5901
) instrui o cliente SSH a configurar um "túnel" TCP, escutando na porta 5901
na máquina cliente e encaminhar todas as conexões para 127.0.0.1:5901
de a máquina server . Depois, vncviewer 127.0.0.1:5901
é usado para se conectar ao lado do cliente do túnel. ssh aceita as conexões e instrui o servidor SSH ( sshd
) a abrir uma conexão idêntica do lado do servidor.
-
No cliente: vncviewer & lrarr; 127.0.0.1:5901 ( ssh )
-
No servidor: sshd & lrarr; 127.0.0.1:5901 ( vncserver )
Como você pode ver, o loopback é usado porque o vncviewer só se conecta ao ssh , que está sendo executado no mesmo computador. Da mesma forma, ambos sshd e vncserver são executados no mesmo servidor.
O tunelamento para um terceiro host pode dar um exemplo mais claro:
-
ssh gatewayhost -L 1357:securehost:5901 vncviewer 127.0.0.1:1357
-
No cliente: vncviewer & lrarr; 127.0.0.1:1357 ( ssh )
-
No servidor: sshd & lrarr; securehost: 5901 ( vncserver )
and why 5901 is used when 5900 is known to be the VNC port. Is the author (carelessly?) presuming that I use the :1 argument on the server side?
Sim, fornecendo -L <any>/127.0.0.1/5901
, o autor assume que o servidor VNC está escutando na porta 5901 (VNC display :1
).