En realidad no he mirado el código fuente de OpenSSH, pero según lo que veo en la vida real y sé sobre el protocolo X, es algo así:
-
ssh
en el lado local se conecta asshd
en el lado remoto, realiza la autenticación del usuario - Debido a que lo ejecutó con el indicador
-Y
(o agregóForwardX11Trusted
a su configuración SSH local),ssh
le dice asshd
que reenvíe todo el tráfico X11 desde su final -
sshd
abre un socket TCP de escucha en el puerto 6010, o el puerto más cercano por encima del cual ningún otro proceso está escuchando (llamemos a este puerto P ) -
sshd
inicia su shell en el extremo remoto, configurando su variable de entornoDISPLAY
en [code] localhost: Q .0 [/ code], donde Q = P – 6000.sshd
ahora está actuando como un proxy de protocolo X , y cualquier programa X se inició bajo este shell se engañará para conectarse con él, creyendo que es un servidor X. - Mientras tanto,
ssh
abre una conexión al servidor X local, según lo especificado por la variable de entornoDISPLAY
local. - De ahora en adelante, todo el tráfico del protocolo X generado por los programas X en el extremo remoto se canaliza a través de su conexión SSH, luego se envía a través del
ssh
local al servidor X local. Por el contrario, todos los eventos X para las ventanas de los programas X (clics del mouse, pulsaciones de teclas, etc.) viajan de regreso a los programas a través del mismo túnel.