Inoltro di X11 su SSH se la configurazione del server non lo consente


10

Considera una situazione in cui eseguo l'accesso tramite SSH dalla macchina A alla macchina B, ho una sessione X sulla macchina A e voglio eseguire un programma X su B.

ssh -X Brende questo lavoro trasparente. Ma cosa succede se manca la configurazione del server X11Forwarding yes, non ho i permessi di root sul server e l'amministratore del server è indifferente?

È ovviamente possibile inoltrare la connessione X11, dal momento che posso trasferire quello che voglio sul canale SSH. In effetti, se il server X locale consente connessioni TCP, è facile come ssh -R 6010:localhost:6000(da regolare per i numeri del display). Che dire del caso comune in cui il server X locale consente solo connessioni socket? Come posso inoltrare X in modo comodo e sicuro, con un minimo di requisiti di installazione (specialmente su B)?

Risposte:


2

La risposta di @Demi è buona, ma penso che completarla sarebbe di grande aiuto.

  • local: il computer locale che serve un Xserver.
  • remote - la macchina remota che serve l'applicazione che guida i dati che vanno all'Xserver

Remoto /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

Il telecomando ~/.Xauthorityè vuoto o non esiste

Sul locale:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

Nel test, local eseguiva Ubuntu 18.05, il telecomando eseguiva Debian Jesse.


6

Il protocollo X11 parla quando si parla con una porta tcp è diverso quando si parla con un socket?

Forse potresti combinare il tuo uso suggerito di ssh -R 6010:localhost:6000portare i dati X11 in over port forwarding, quindi collegare la gabbia locale tra la porta tcp e il listener socket X11 con nc come:

nc -l -p 6000 > /tmp/.X11-unix/X0

Sì, questa è l'idea. Ma speravo in una risposta che dicesse "metti questo nel tuo .ssh/configlato client e quello nel tuo .profilelato server, e poi esegui ssh B".
Gilles 'SO- smetti di essere malvagio'

1
C'è una semplice risposta "mettilo nella tua configurazione", il problema è che lo escludi nelle qualifiche della tua domanda perché l'opzione di cui hai bisogno va sul lato sshd_config delle cose su B. Stai cercando di aggirare un blocco messo in posto per rendere difficile l'apertura involontaria di un problema di sicurezza.
Caleb,

3
Sto prendendo di mira il caso (nella mia esperienza molto comune) in cui l'amministratore non si preoccupa e ha lasciato le impostazioni predefinite sul posto. L'inoltro X11 non è vietato dalla politica, è solo l'inconveniente dell'indifferenza di amministratore di sistema. Comunque l'inoltro X11 consente al server di attaccare il client, quindi vietarlo sul lato server non ha molto senso.
Gilles 'SO- smetti di essere malvagio'

@Gilles Concordo sul fatto che il valore predefinito non protegge da nulla di utile. Quindi dovremmo fare lobby per far cambiare il valore predefinito a monte?
Caleb,

Per me, /tmp/.X11-unix/X0è un socket di dominio unix, non un FIFO, quindi ogni tentativo di reindirizzamento termina con ENXIO: No such device.
Samveen,

2
  1. Fai girare un altro server X usando Xephyr. Questo per motivi di sicurezza: impedisce al sistema remoto di compromettere il tuo.

  2. Utilizzare SSH per inoltrare una presa remota alla presa Xephyr. SSH supporta anche l'inoltro dei socket Unix.

  3. Impostare correttamente le variabili di ambiente sul server remoto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.