Tengo una máquina que ejecuta Ubuntu que utilizo SSH desde mi máquina Fedora 14. Quiero reenviar X desde la máquina Ubuntu a Fedora para poder ejecutar programas gráficos de forma remota. Ambas máquinas están en una LAN.
Sé que la -X
opción habilita el reenvío X11 en SSH, pero siento que me faltan algunos de los pasos.
¿Cuáles son los pasos necesarios para reenviar X desde una máquina Ubuntu a Fedora a través de SSH?
ssh
xorg
xforwarding
Sr. Shickadance
fuente
fuente
Respuestas:
El reenvío X11 debe habilitarse tanto en el lado del cliente como en el lado del servidor.
En el lado del cliente , la
-X
opción (X mayúscula)ssh
habilita el reenvío X11, y puede hacer que esto sea el predeterminado (para todas las conexiones o para una conexión específica) conForwardX11 yes
in~/.ssh/config
.En el lado del servidor ,
X11Forwarding yes
debe especificarse en/etc/ssh/sshd_config
. Tenga en cuenta que el valor predeterminado es sin reenvío (algunas distribuciones lo activan en su valor predeterminado/etc/ssh/sshd_config
) y que el usuario no puede anular esta configuración.El
xauth
programa debe instalarse en el lado del servidor. Si hay algún programa X11 allí, es muy probable quexauth
esté allí. En el caso poco probable de quexauth
se haya instalado en una ubicación no estándar, se puede llamar a través de él~/.ssh/rc
(¡en el servidor!).Tenga en cuenta que no necesita establecer ninguna variable de entorno en el servidor.
DISPLAY
yXAUTHORITY
se establecerá automáticamente en sus valores adecuados. Si ejecuta ssh yDISPLAY
no está configurado, significa que ssh no reenvía la conexión X11.Para confirmar que ssh está reenviando X11, verifique si hay una línea contenida
Requesting X11 forwarding
en lassh -v -X
salida. Tenga en cuenta que el servidor no responderá de ninguna manera, una precaución de seguridad de ocultar detalles de posibles atacantes.fuente
xhost +
.xhost
es de una era más suave cuando tener una máquina conectada a la red significaba que eras confiable.xhost +
significa que cualquiera que pueda falsificar su IP puede tomar el control de su sesión de servidor X.ssh -X
configurará todas las autorizaciones requeridas. Si el reenvío X11 está deshabilitado en la configuración del servidor, hable con su administrador; si eso no funciona, consulte Reenvío X11 sobre SSH si la configuración del servidor no lo permite .~/.ssh/config
y/etc/ssh/sshd_config
en el mismo lugar. No podría decir si eran archivos diferentes o simplemente un cambio en la nomenclatura..Xauthority
archivo. Si usa Red Hat u otro sistema con SELinux, verifique el contexto de SELinux, consulte unix.stackexchange.com/questions/36540/…ssh -X
ejecutarxterm &
para obtener un terminal gráfico como la prueba definitiva para ver si está funcionando.Para que el reenvío X11 funcione sobre ssh, necesitará 3 cosas en su lugar.
Si tiene ambos # 1 y # 2 en su lugar pero le falta el # 3, entonces terminará con una variable de entorno DISPLAY vacía.
Sopa de nueces, así es cómo hacer que el reenvío X11 funcione.
En su servidor, asegúrese de que / etc / ssh / sshd_config contenga:
Es posible que necesite SIGHUP sshd para que recoja estos cambios.
En su servidor, asegúrese de tener instalado xauth.
Si no tiene instalado xauth, se encontrará con el problema de "variable de entorno DISPLAY vacía".
En su cliente, conéctese a su servidor. Asegúrese de decirle a ssh que permita el reenvío de X11. yo prefiero
pero te puede gustar
o puede configurar esto en su ~ / .ssh / config.
Me encontré con esta variable de entorno DISPLAY vacía el día de hoy cuando ingresé a un nuevo servidor que no administro. Rastrear la parte xauth que faltaba fue un poco divertido. Esto es lo que hice y lo que tú puedes hacer también.
En mi estación de trabajo local, donde soy administrador, verifiqué que / etc / ssh / sshd_config estaba configurado para reenviar X11. Cuando ssh -X vuelve a localhost, obtengo mi DISPLAY configurado correctamente.
Forzar que DISPLAY se desarmara no fue demasiado difícil. Solo necesitaba ver qué estaban haciendo sshd y ssh para configurarlo correctamente. Aquí está la salida completa de todo lo que hice en el camino.
En lugar de usar sudo para forzar la copia de mis archivos ssh_host_ {dsa, rsa} _key en su lugar, utilicé ssh-keygen para crear archivos ficticios para mí.
Enjuague y repita con -t dsa:
Edite ~ / dummy-sshd / sshd_config para apuntar a los nuevos archivos de clave ssh_host correctos.
Inicie sshd en un nuevo puerto en modo sin desconexión:
Vaya, mejor corrige ese camino:
Pop una nueva terminal y ssh en localhost en el puerto 50505:
Mira las últimas tres líneas allí. Afortunadamente tenía el conjunto DISPLAY, y tenía esas dos líneas bonitas de / usr / bin / xauth.
A partir de ahí, fue un juego de niños mover mi / usr / bin / xauth a /usr/bin/xauth.old, desconectarme de ssh y detener el sshd, luego lanzar sshd y ssh nuevamente en localhost.
Cuando / usr / bin / xauth desapareció, no vi DISPLAY reflejado en mi entorno.
No hay nada brillante pasando aquí. Principalmente tuve la suerte de elegir un enfoque sensato para intentar reproducir esto en mi máquina local.
fuente
export DISPLAY=:10
. Nunca adiviné ese número de pantallas.Asegúrate de eso:
xauth
instalado en el servidor (ver:xauth info
/xauth list
).En el servidor, su
/etc/ssh/sshd_config
archivo tiene estas líneas:En el lado del cliente, su
~/.ssh/config
archivo tiene estas líneas:En el lado del cliente, tiene instalado el servidor X (por ejemplo, macOS: XQuartz; Windows: Xming).
Luego, para reenviar X11 usando SSH, debe agregar
-X
a sussh
comando, por ejemploluego verifique que su no
DISPLAY
esté vacío:Si es así, entonces teniendo un parámetro detallado para ssh (
-v
), verifique cualquier advertencia, por ejemploEn caso de que tenga X11 no confiable como se muestra arriba, intente
-Y
marcar en su lugar (si confía en el host):Consulte: ¿Qué significa "Advertencia: la configuración de reenvío de X11 no confiable no se realizó: no se generaron los datos de la clave xauth" cuando se ssh'ing con -X?
En caso de que advierta: No hay datos de xauth , puede intentar generar un nuevo
.Xauthority
archivo, por ejemploVer: Crear / reconstruir un nuevo archivo .Xauthority
Si tiene advertencias diferentes a las anteriores, siga las pistas adicionales.
fuente
La solución es agregar esta línea a su
/etc/ssh/sshd_config
:https://joshua.hoblitt.com/rtfm/2013/04/how_to_fix_x11_forwarding_request_failed_on_channel_0/
fuente
Permitir que Ubuntu bash en Windows 10 se ejecute
ssh -X
para obtener un entorno GUI en un servidor remotoInstale todo lo siguiente. En la ventana, instale
Xming
. En Ubuntu bash, usesudo apt install
para instalarssh xauth xorg
.Ir a la carpeta contiene el
ssh_config
archivo, el mío es/etc/ssh
.Editar
ssh_config
como administrador (USEsudo
). En el interiorssh_config
, retire el hash#
en las líneasForwardAgent
,ForwardX11
,ForwardX11Trusted
, y establecer los argumentos correspondientes ayes
.En el
ssh_config
archivo, elimine el hash frontal#
antesPort 22
yProtocol 2
, y también agregue una nueva línea al final del archivo para indicar la ubicación del archivo xauthXauthLocaion /usr/bin/xauth
, recuerde escribir su propia ruta del archivo xauth.Ahora que hemos terminado de editar el
ssh_config
archivo, guárdelo cuando salgamos del editor. Ahora vaya a la carpeta~
o$HOME
, agregueexport DISPLAY=localhost:0
a su.bashrc
archivo y guárdelo.Casi terminamos. Reinicia tu shell bash, abre tu
Xming
programa y úsalossh -X yourusername@yourhost
. Entonces disfrute del entorno GUI.El problema también está en el subsistema Ubuntu en Windows, y el enlace está en
https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776
fuente
Añadir
X11UseLocalhost no
a/etc/ssh/sshd_config
y reiniciar el servidor SSH.Si no aparece DISPLAY, verifique si xauth está instalado correctamente y luego vuelva a intentarlo.
RHE / CEntos no tiene este problema, ¡esto es algo de Ubuntu!
fuente
Para mí, el problema estaba en la opción de montaje de nodev para el sistema de archivos / tmp. X11 necesita un archivo especial para crearse allí.
Por lo tanto, compruebe cuáles son las opciones de montaje para el sistema de archivos / tmp si utiliza una partición o disco separado para eso.
fuente
Para agregar a las excelentes respuestas anteriores (configuración
~/.ssh/config
y verificación para ver si laDISPLAY
variable de entorno está configurada en el cliente, configuración/etc/ssh/sshd_config
e instalaciónxauth
en el servidor), también asegúrese de quexterm
esté instalada en el cliente, por ejemplofuente
xauth
Se puede bloquear.Utilizando
En la máquina en la que estaba tratando de
ssh
romper la cerraduraxauth
. Salir de lassh
sesión después de emitir yxauth -b
luego volver a iniciar sesión finalmente me permitió con éxitoecho $DISPLAY
. Definitivamente intente esto antes de volver a crear.Xauthority
fuente
X11Forwarding
debe configurarse en el servidor SSH (en su caso, el cuadro de Ubuntu) en élsshd_config
, y debe permitir que se reenvíe X11 para el cliente SSH (su cuadro de Fedora) pasando la-X
opción o editando elssh_config
archivo para agregar elForwardX11
valor predeterminado.fuente
xauth
instalarse en la máquina remota, de lo contrario, las cosas de autoridad x no funcionarán.DISPLAY
?$DISPLAY
siX11Forwarding
está habilitado yxauth
está presente en el sistema cliente.export DISPLAY=:10.0
pero no de otra manera. De lo contrario, se queja de que no puede encontrar:0
. ¿Quizás se necesita algo más para que esto suceda automáticamente?