Mam komputer z systemem Ubuntu, na który przesyłam SSH z mojego komputera Fedora 14. Chcę przesłać X z komputera Ubuntu z powrotem do Fedory, aby móc zdalnie uruchamiać programy graficzne. Oba urządzenia są w sieci LAN.
Wiem, że ta -X
opcja umożliwia przekazywanie X11 w SSH, ale wydaje mi się, że brakuje mi niektórych kroków.
Jakie są wymagane kroki, aby przesłać X z komputera Ubuntu do Fedory przez SSH?
ssh
xorg
xforwarding
Pan Shickadance
źródło
źródło
Odpowiedzi:
Przekazywanie X11 musi być włączone zarówno po stronie klienta, jak i serwera.
Na stronie klienta ,
-X
(kapitał X) Opcjassh
umożliwia przekazywanie X11, i można zrobić to domyślny (dla wszystkich połączeń lub dla konkretnego łączem) zForwardX11 yes
w~/.ssh/config
.Na stronie serwera ,
X11Forwarding yes
należy określić w/etc/ssh/sshd_config
. Zauważ, że domyślnie nie ma przekazywania (niektóre dystrybucje włączają go domyślnie/etc/ssh/sshd_config
) i że użytkownik nie może zastąpić tego ustawienia.xauth
Program musi być zainstalowany po stronie serwera. Jeśli są tam jakieś programy X11, jest bardzo prawdopodobne, żexauth
tam będą. W mało prawdopodobnym przypadkuxauth
został zainstalowany w niestandardowej lokalizacji, można go wywołać przez~/.ssh/rc
(na serwerze!).Pamiętaj, że nie musisz ustawiać żadnych zmiennych środowiskowych na serwerze.
DISPLAY
iXAUTHORITY
zostaną automatycznie ustawione na odpowiednie wartości. Jeśli uruchomisz ssh iDISPLAY
nie jest ustawiony, oznacza to, że ssh nie przekazuje połączenia X11.Aby potwierdzić, że ssh przesyła X11, sprawdź wiersz zawierający
Requesting X11 forwarding
danessh -v -X
wyjściowe. Pamiętaj, że serwer nie odpowie w żaden sposób, co stanowi zabezpieczenie przed ukryciem szczegółów przed potencjalnymi atakującymi.źródło
xhost +
.xhost
pochodzi z łagodniejszej epoki, gdy posiadanie maszyny podłączonej do sieci oznaczało, że jesteś godny zaufania.xhost +
oznacza, że każdy, kto może sfałszować twoje IP, może przejąć kontrolę nad twoją sesją serwera X.ssh -X
skonfiguruje wszystkie wymagane autoryzacje. Jeśli przekazywanie X11 jest wyłączone w konfiguracji serwera, porozmawiaj z administratorem; jeśli to nie działa, zobacz Przekazywanie X11 przez SSH, jeśli konfiguracja serwera na to nie pozwala .~/.ssh/config
i/etc/ssh/sshd_config
w tym samym miejscu. Nie mogłem stwierdzić, czy były to inne pliki, czy tylko zmiana w nomenklaturze..Xauthority
pliku. Jeśli używasz Red Hat lub innego systemu z SELinux, sprawdź kontekst SELinux, zobacz unix.stackexchange.com/questions/36540/…ssh -X
uruchomieniu,xterm &
aby uzyskać terminal graficzny jako ostateczny test sprawdzający, czy działa.Aby przekazywanie X11 działało przez ssh, potrzebujesz 3 rzeczy na swoim miejscu.
Jeśli masz zarówno numer 1, jak i numer 2, ale brakuje Ci numeru 3, otrzymasz pustą zmienną środowiskową DISPLAY.
Zupy do orzechów, oto jak sprawić, by przekazywanie X11 działało.
Na serwerze upewnij się, że plik / etc / ssh / sshd_config zawiera:
Konieczne może być SIGHUP sshd, aby wyłapał te zmiany.
Na swoim serwerze upewnij się, że masz zainstalowany xauth.
Jeśli nie masz zainstalowanego xauth, napotkasz problem „pusta zmienna środowiskowa DISPLAY”.
Na kliencie połącz się z serwerem. Pamiętaj, aby powiedzieć ssh, aby zezwoliło na przekazywanie X11. wolę
ale może ci się spodobać
lub możesz to ustawić w swoim ~ / .ssh / config.
Wpadłem dzisiaj na tę pustą zmienną środowiskową DISPLAY, kiedy ssh'owałem na nowym serwerze, którym nie administruję. Odnalezienie brakującej części xauth było trochę zabawne. Oto co zrobiłem i co możesz zrobić.
Na mojej lokalnej stacji roboczej, gdzie jestem administratorem, zweryfikowałem, że / etc / ssh / sshd_config został skonfigurowany do przekazywania X11. Kiedy ponownie ssh -X do localhost, mój DISPLAY jest poprawnie ustawiony.
Zmuszenie DISPLAY do rozbrojenia nie było zbyt trudne. Musiałem tylko obserwować, co robią sshd i ssh, aby ustawić go poprawnie. Oto pełna moc wszystkiego, co zrobiłem po drodze.
Zamiast używać sudo do wymuszania kopiowania moich plików ssh_host_ {dsa, rsa} _key na swoje miejsce, użyłem ssh-keygen, aby stworzyć dla siebie atrapy.
Przepłucz i powtórz za pomocą -t dsa:
Zmodyfikuj ~ / dummy-sshd / sshd_config, aby wskazać poprawne nowe pliki kluczy ssh_host.
Uruchom sshd na nowym porcie w trybie bez odłączania:
Ups, lepiej popraw tę ścieżkę:
Pop nowy terminal i ssh do localhost na porcie 50505:
Spójrz na ostatnie trzy wiersze tam. Na szczęście miałem ustawiony DISPLAY i miałem te dwie ładnie wyglądające linie z / usr / bin / xauth.
Stąd dziecinnie proste było przeniesienie mojego / usr / bin / xauth do /usr/bin/xauth.old, rozłączenie się z ssh i zatrzymanie sshd, a następnie uruchomienie sshd i ssh z powrotem na localhost.
Kiedy nie było / usr / bin / xauth, nie widziałem DISPLAY odzwierciedlonego w moim środowisku.
Nie dzieje się tu nic wspaniałego. Głównie miałem szczęście, wybierając rozsądne podejście, aby spróbować odtworzyć to na mojej lokalnej maszynie.
źródło
export DISPLAY=:10
. Nigdy nie zgadłem takiej liczby wyświetlaczy.Upewnić się, że:
xauth
zainstalowany na serwerze (patrz:xauth info
/xauth list
).Na serwerze twój
/etc/ssh/sshd_config
plik ma następujące linie:Po stronie klienta twój
~/.ssh/config
plik ma następujące linie:Po stronie klienta masz zainstalowany serwer X (np. MacOS: XQuartz; Windows: Xming).
Następnie, aby wykonać przekazywanie X11 za pomocą SSH, musisz dodać
-X
dossh
polecenia, npnastępnie sprawdź, czy twój nie
DISPLAY
jest pusty przez:Jeśli tak, to mając pełny parametr dla ssh (
-v
), sprawdź wszelkie ostrzeżenia, npJeśli masz niezaufany X11, jak pokazano powyżej, spróbuj
-Y
zamiast tego oznaczyć flagę (jeśli ufasz hostowi):Zobacz: Co oznacza „Ostrzeżenie: niezaufana konfiguracja przekazywania X11 nie powiodła się: nie wygenerowano danych klucza xauth”, gdy ssh'ing z -X?
W przypadku ostrzeżenia: Brak danych xauth , możesz spróbować wygenerować nowy
.Xauthority
plik, npZobacz: Utwórz / odbuduj nowy plik .Xauthority
Jeśli masz inne ostrzeżenia niż wyżej, postępuj zgodnie z dalszymi wskazówkami.
źródło
Rozwiązaniem jest dodanie tej linii do
/etc/ssh/sshd_config
:https://joshua.hoblitt.com/rtfm/2013/04/how_to_fix_x11_forwarding_request_failed_on_channel_0/
źródło
Zezwolenie Ubuntu na uruchomienie systemu Windows 10 w
ssh -X
celu uzyskania środowiska GUI na zdalnym serwerzeZainstaluj wszystkie następujące elementy. W systemie Windows zainstaluj
Xming
. W systemie Ubuntu bash użyj,sudo apt install
aby zainstalowaćssh xauth xorg
.Idź do folderu zawierającego
ssh_config
plik, mój jest/etc/ssh
.Edytuj
ssh_config
jako administrator (USEsudo
). Wewnątrzssh_config
, usuń mieszania#
w liniiForwardAgent
,ForwardX11
,ForwardX11Trusted
i ustaw odpowiednie argumentyyes
.W
ssh_config
pliku usuń przedni skrót#
przedPort 22
iProtocol 2
, a także dodaj nowy wiersz na końcu pliku, aby podać lokalizację pliku xauthXauthLocaion /usr/bin/xauth
, pamiętaj, aby napisać własną ścieżkę do pliku xauth.Teraz, gdy skończyliśmy edytować
ssh_config
plik, zapisz go, gdy wyjdziemy z edytora. Teraz przejdź do folderu~
lub$HOME
dołączexport DISPLAY=localhost:0
do.bashrc
pliku i zapisz go.Prawie skończyliśmy. Zrestartuj powłokę bash, otwórz
Xming
program i użyjssh -X yourusername@yourhost
. Następnie ciesz się środowiskiem GUI.Problem dotyczy również podsystemu Ubuntu w systemie Windows, a łącze znajduje się pod adresem
https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776
źródło
Dodaj
X11UseLocalhost no
do/etc/ssh/sshd_config
i zrestartować serwer SSH.Jeśli nie wyświetla się WYŚWIETLACZ, sprawdź, czy xauth jest poprawnie zainstalowany, a następnie spróbuj ponownie.
RHE / CEntos nie ma tego problemu, to kwestia Ubuntu!
źródło
Dla mnie problemem była opcja montowania nodev dla systemu plików / tmp. X11 potrzebuje tam specjalnego pliku.
Sprawdź więc, jakie są opcje montowania systemu plików / tmp, jeśli używasz do tego osobnej partycji lub dysku.
źródło
Aby dodać do poprzednich doskonałych odpowiedzi (konfigurowanie
~/.ssh/config
i sprawdzanie, czyDISPLAY
zmienna środowiskowa jest ustawiona na kliencie, konfigurowanie/etc/ssh/sshd_config
i instalacjaxauth
na serwerze), upewnij się również, żexterm
jest zainstalowana na kliencie, np.źródło
xauth
może zostać zamknięty.Za pomocą
Na maszynie, którą próbowałem
ssh
włamać, włamał się zamekxauth
. Wylogowanie zssh
sesji po wydaniu,xauth -b
a następnie ponowne zalogowanie w końcu pozwoliło mi pomyślnieecho $DISPLAY
. Zdecydowanie wypróbuj to przed ponownym utworzeniem.Xauthority
źródło
X11Forwarding
musi być ustawiony na serwerze SSH (w twoim przypadku na polu Ubuntu)sshd_config
i musisz zezwolić na przekazywanie X11 dla klienta SSH (twoje okno Fedory), przekazując-X
opcję lub edytującssh_config
plik, aby dodać wartośćForwardX11
domyślną.źródło
xauth
zainstalować na zdalnym komputerze, w przeciwnym razie funkcje X Authority nie będą działać.DISPLAY
?$DISPLAY
jeśliX11Forwarding
jest włączony ixauth
jest obecny w systemie klienta.export DISPLAY=:10.0
ale nie inaczej. W przeciwnym razie skarży się, że nie może znaleźć:0
. Może potrzebne jest coś jeszcze, aby stało się to automatycznie?