Przekazywanie X11 przez SSH, jeśli konfiguracja serwera na to nie pozwala


10

Rozważmy sytuację, w której loguję się przez SSH z komputera A na komputer B, mam sesję X na komputerze A i chcę uruchomić program X na B.

ssh -X Bsprawia, że ​​działa to przejrzyście. Ale co, jeśli brakuje konfiguracji serwera X11Forwarding yes, nie mam uprawnień roota na serwerze, a administrator serwera jest obojętny?

Oczywiście możliwe jest przekazanie połączenia X11, ponieważ mogę przesyłać cokolwiek chcę przez kanał SSH. W rzeczywistości, jeśli lokalny serwer X zezwala na połączenia TCP, jest to tak proste, jak ssh -R 6010:localhost:6000(do dostosowania do wyświetlanych liczb). Co z typowym przypadkiem, w którym lokalny serwer X zezwala tylko na połączenia gniazd? Jak mogę wygodnie i bezpiecznie przekazywać X przy minimalnych wymaganiach instalacyjnych (szczególnie na B)?

Odpowiedzi:


2

Odpowiedź @Demi jest dobra, ale myślę, że wypełnienie jej byłoby świetną pomocą.

  • local - lokalna maszyna obsługująca Xserver.
  • remote - zdalna maszyna obsługująca aplikację, która napędza dane przesyłane do Xserver

Zdalne /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

Pilot ~/.Xauthorityjest pusty lub nie istnieje

Lokalnie:

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

W teście wersja lokalna działała na Ubuntu 18.05, zdalna działała na Debianie Jesse.


6

Czy protokół X11 mówi inaczej podczas rozmowy z portem TCP podczas rozmowy z gniazdem?

Być może możesz połączyć własne sugerowane użycie ssh -R 6010:localhost:6000do przeniesienia danych X11 przez przekierowanie portów, a następnie zmostkować lokalny gab między portem tcp a odbiornikiem gniazda X11 za pomocą nc, takiego jak:

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

Tak, to jest pomysł. Miałem jednak nadzieję na odpowiedź: „włóż to .ssh/configpo stronie klienta i po stronie .profileserwera, a następnie po prostu uruchom ssh B”.
Gilles „SO- przestań być zły”

1
Istnieje prosta odpowiedź „włóż to do swojej konfiguracji”, problem polega na tym, że wykluczasz to w swoich kwalifikacjach do pytania, ponieważ potrzebna opcja znajduje się po stronie sshd_config na stronie B. Próbujesz obejść blok wstawiony w miejsce utrudniające przypadkowe otwarcie problemu dotyczącego bezpieczeństwa.
Caleb

3
Mam na celu (z mojego doświadczenia bardzo częstego) przypadek, w którym administrator nie dba o to i po prostu zostawił domyślne ustawienia. Przekazywanie X11 nie jest zabronione przez zasady, jest po prostu niedogodnością z powodu obojętności sysadmin. W każdym razie przekazywanie X11 pozwala serwerowi zaatakować klienta, więc banowanie go po stronie serwera nie ma większego sensu.
Gilles „SO- przestań być zły”

@Gilles Zgadzam się, że domyślnie tak naprawdę nie chroni przed niczym przydatnym. Czy więc powinniśmy lobbować, aby zmienić domyślną wersję w górę?
Caleb

Dla mnie /tmp/.X11-unix/X0jest to gniazdo domeny unix, a nie FIFO, więc każda próba przekierowania kończy się ENXIO: No such device.
Samveen

2
  1. Rozwiń dodatkowy serwer X za pomocą Xephyr. Ma to na celu zapewnienie bezpieczeństwa - zapobiega to atakowi zdalnego systemu na twój.

  2. Użyj SSH, aby przekazać zdalne gniazdo do gniazda Xephyr. SSH obsługuje również przekazywanie gniazd uniksowych.

  3. Ustaw poprawnie zmienne środowiskowe na zdalnym serwerze.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.