Załóżmy, że chcesz brutalnej siły uzyskać połączenie z X ...
Załóżmy, że już uruchamiasz swoje polecenia na serwerze (gdzie działa X), w przeciwnym razie spraw, by najpierw działało, a następnie użyj 'ssh -X użytkownik @ serwer) od klienta;).
Może istnieć kilka sposobów uruchamiania poleceń xauth, na przykład możesz używać „sudo”, ale może to spowodować utratę lub zmianę zmiennych środowiskowych. Należy zachować następujące zmienne środowiskowe: DISPLAY i XAUTHORITY. Aby sprawdzić, czy tak jest, możesz uruchomić „echo $ XAUTHORITY” w taki sam sposób, jak uruchamiasz swoje polecenia, ale upewnij się, że nie rozwijasz zmiennych środowiskowych przed uruchomieniem tych poleceń. Na przykład spróbuj: sudo bash -c 'echo "$ XAUTHORITY"', aby zobaczyć, czym naprawdę jest XAUTHORITY po uruchomieniu sudo (jeśli zniknie, być może trzeba będzie coś dodać do pliku sudoers, patrz gdzie indziej).
Ostatecznie uruchom następujące polecenie jako użytkownik, z którym chcesz uzyskać dostęp, na serwerze:
xauth info
Spowoduje to wyświetlenie „pliku uprawnień”, który będzie używany (domyślnie /root/.Xauthority, dla roota lub coś w rodzaju /home/theuser/.Xauthority). Jeśli pokazuje poprawny plik .Xauthority, to nie musisz się martwić o zmienną środowiskową XAUTHORITY (tak naprawdę nie wiedziałbym, kiedy to nie będzie, z wyjątkiem sytuacji, gdy chcesz manipulować niestandardowym miejscem tego pliku ).
Usuń ten plik (jeśli w ogóle istnieje):
rm /root/.Xauthority
Zamień /root/.Xauthority
na właściwy plik XAUTHORITY dla twojej sprawy.
Odtwórz go ponownie, ale pusty (jest to potrzebne do wielu poleceń):
touch /root/.Xauthority
W tym momencie pojawi się błąd Brak protokołu , nawet jeśli wcześniej otrzymałeś Nieprawidłowy MIT-MAGIC-COOKIE-1 . Znajdź plik uprawnień, z którego korzysta obecnie serwer X:
ps aux | grep Xorg
Powinno to pokazywać coś takiego:
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
Nazwa pliku po -auth
jest potrzebna w następnym poleceniu. Uruchom jako root:
sudo xauth -f '/var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711}' list
Zawiera 32-cyfrowy klucz szesnastkowy. Na przykład dane wyjściowe mogą być:
hostname/unix:0 MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
Użyj go do wygenerowania pliku .Xauthority (jako użytkownik, który musi się ponownie zalogować):
xauth add $DISPLAY MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
zamień „c0eaf749aa252101a0f57d5087089db7” na to, co zostało zwrócone dla ciebie przez polecenie list. Teraz Twój .Xauthority powinien mieć rozmiar 51 bajtów i możesz połączyć się z serwerem X (ponownie).