Supponiamo che tu voglia forzare la forza per ottenere una connessione con X ...
Supponiamo che tu stia già eseguendo i tuoi comandi sul server (dove X viene eseguito), altrimenti fallo funzionare prima e poi usa 'ssh -X user @ server) dal client in seguito;).
Potrebbero esserci diversi modi per eseguire i comandi xauth, ad esempio, potresti usare "sudo", ma ciò potrebbe perdere o cambiare le variabili di ambiente. È necessario conservare le seguenti variabili di ambiente: DISPLAY e XAUTHORITY. Per verificare se è così, puoi eseguire 'echo $ XAUTHORITY' nello stesso modo in cui esegui i tuoi comandi, ma assicurati di non espandere le variabili di ambiente prima di eseguire quei comandi. Ad esempio, prova: sudo bash -c 'echo "$ XAUTHORITY"' per vedere cosa è realmente XAUTHORITY dopo aver eseguito il tuo sudo (se scompare potresti aver bisogno di aggiungere qualcosa al tuo file sudoers, vedi altrove).
Alla fine, esegui il seguente comando come l'utente con cui desideri accedere, sul server:
xauth info
Questo mostrerà il 'File di autorità' che verrà usato (/root/.Xauthority di default, per root, o qualcosa come /home/theuser/.Xauthority). Se mostra il file .Xauthority corretto, allora non devi preoccuparti della variabile di ambiente XAUTHORITY in realtà (in realtà, non saprei quando non lo farebbe, tranne se vuoi manipolare un posto non standard di quel file ).
Rimuovi quel file (se esiste):
rm /root/.Xauthority
Sostituisci /root/.Xauthority
con il file XAUTHORITY corretto per il tuo caso.
Ricrealo, ma vuoto (questo è necessario per molti comandi):
touch /root/.Xauthority
A questo punto otterrai l' errore Nessun protocollo specificato , anche se in precedenza hai ricevuto MIT-MAGIC-COOKIE-1 non valido . Trova il file di autorità che il server X sta utilizzando al momento:
ps aux | grep Xorg
Questo dovrebbe mostrare qualcosa come:
root 1153 0.0 1.0 149560 44464 tty7 Ss+ dec02 0:00 /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711} -background none -noreset -displayfd 17 vt7
Il nome del file dopo -auth
è quello che ti serve nel prossimo comando. Esegui come root:
sudo xauth -f '/var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711}' list
Questo elenca una chiave esadecimale a 32 cifre. Ad esempio, l'output potrebbe essere:
hostname/unix:0 MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
Usalo per generare il tuo file .Xauthority (come utente che deve accedere di nuovo):
xauth add $DISPLAY MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
sostituisci 'c0eaf749aa252101a0f57d5087089db7' con quello che ti è stato restituito dal comando list. Ora la tua .Xauthority dovrebbe avere una dimensione di 51 byte e puoi connetterti al server X (di nuovo).