Cuando SSH se localiza en mi computadora (no pregunte, es una solución alternativa), no puedo iniciar aplicaciones gráficas sin ejecutar:
export DISPLAY=:0.0
Si ejecuto esto primero y luego ejecuto una aplicación gráfica, todo funciona. Si no, no funciona, no hay pantalla para adjuntar.
¿Existe un comando para enumerar todas las pantallas disponibles (es decir, todos los valores posibles) en una máquina?

( DISPLAY=:0 yourapp & ).w. Más información: ¿ enumerar los nombres para mostrar X existentes?Respuestas:
Si desea que la conexión X se reenvíe por SSH, debe habilitarla tanto en el lado del servidor como en el lado del cliente. (Dependiendo de la distribución, puede habilitarse o deshabilitarse de manera predeterminada). En el lado del servidor, asegúrese de tener
X11Forwarding yesdentro/etc/sshd_config(/etc/ssh/sshd_configo donde esté el archivo de configuración). En el lado del cliente, pase la-Xopción alsshcomando o ingreseForwardX11su~/.ssh/config.Si corres
ssh -X localhost, deberías ver que$DISPLAYes (probablemente)localhost:10.0. Contraste con:0.0, que es el valor cuando no está conectado a través de SSH. (La.0parte se puede omitir; es un número de pantalla, pero rara vez se usan varias pantallas). Hay dos formas de pantallas X que probablemente encontrará::.:.Con
ssh -X localhost, puede acceder al servidor X a través de ambas pantallas, pero las aplicaciones utilizarán un método diferente::NUMBERaccede al servidor a través de sockets locales y memoria compartida, mientras queHOSTNAME:NUMBERaccede al servidor a través de TCP, que es más lento y desactiva algunas extensiones.Tenga en cuenta que necesita una forma de autorización para acceder a un servidor X, llamada cookie y que normalmente se almacena detrás de escena en el archivo
~/.Xauthority. Si está utilizando ssh para acceder a una cuenta de usuario diferente, o si su distribución coloca las cookies en un archivo diferente, es posible queDISPLAY=:0no funcione dentro de la sesión SSH (pero lossh -Xhará, si está habilitado en el servidor; nunca Necesito meterse conXAUTHORITYal hacerssh -X). Si eso es un problema, debe configurar laXAUTHORITYvariable de entorno u obtener las cookies del otro usuario .Para responder a su pregunta real:
Las pantallas locales corresponden a un zócalo
/tmp/.X11-unix.Las pantallas remotas corresponden a puertos TCP abiertos superiores a 6000; El acceso al número de pantalla N en la máquina M se realiza mediante la conexión al puerto TCP 6000 + N en la máquina M. Desde la máquina M:
(El resto de este punto es de interés académico únicamente).
Desde otra máquina, puede usar
nmap -p 6000-6099 host_namepara sondear puertos TCP abiertos en el rango habitual. Es raro hoy en día tener servidores X escuchando en un socket TCP, especialmente fuera de la interfaz de bucle invertido.Estrictamente hablando, otra aplicación podría estar usando un puerto en el rango generalmente utilizado por los servidores X. Puede saber si un servidor X está escuchando comprobando qué programa tiene abierto el puerto.
Si eso muestra algo ambiguo
sshd, no hay forma de saber con certeza si es un servidor X o una coincidencia.fuente
La pantalla es el primer argumento para
Xorg.psEntonces puedes explotarXorg.Luego puede
awkhacerlo en cualquier formato que necesite.fuente
ps aux |grep Xfuncionó mejor para míwmuestra a todos los que han iniciado sesión y su pantalla.DISPLAY=:0 netsurf "https://medium.com/"... o useexport DISPLAY=:0para compartir el var con el proceso, no solo el shell[Editar: ejecuté una instancia de Xnest para ver si esto podría atraparlo, no lo hace; solo captura shells de inicio de sesión ('w' es la abreviatura de 'who'). De vuelta al tablero de dibujo para mí.] [Editar: Lo encontré:
]
fuente
ps xeww | grep DISPLAY=:1024ahora eso es extraño. También estoy ejecutando chrome-remote-desktop en la pantalla 20.wno funciona si no se está ejecutando ninguna aplicación en el servidor x (incluido el administrador de ventanas y el escritorio) Perols /tmp/.X11-unixfunciona.hará el trabajo enumerando todas las PANTALLAS actuales. También puede ver las pantallas asignadas para un usuario específico ($ usr) con:
fuente
ps e -u $USER | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u?En la
/tmpcarpeta también puede haber.X??-lockarchivos que??indiquen los números de sesión.Debe eliminarlos si desea reutilizar un número de sesión.
Puede verlos usando
ls -anormalmente los archivos que comienzan con a.están ocultos.fuente