Zdalny serwer X z ssh -X

12

Próbuję rozpocząć zdalną sesję gnome przy użyciu: ssh -X [email protected] gnome-session

Zarówno klient, jak i serwer to Ubuntu w wersji 12.04

Dostaję następujące (i niewiele się dzieje) ...

GNOME_KEYRING_CONTROL=/tmp/keyring-3aeNAh
GPG_AGENT_INFO=/tmp/keyring-3aeNAh/gpg:0:1
GNOME_KEYRING_PID=3573
GNOME_KEYRING_CONTROL=/tmp/keyring-3aeNAh
GPG_AGENT_INFO=/tmp/keyring-3aeNAh/gpg:0:1
GNOME_KEYRING_CONTROL=/tmp/keyring-3aeNAh
GPG_AGENT_INFO=/tmp/keyring-3aeNAh/gpg:0:1
SSH_AUTH_SOCK=/tmp/keyring-3aeNAh/ssh
GNOME_KEYRING_CONTROL=/tmp/keyring-3aeNAh
GPG_AGENT_INFO=/tmp/keyring-3aeNAh/gpg:0:1
SSH_AUTH_SOCK=/tmp/keyring-3aeNAh/ssh

(gnome-settings-daemon:3572): color-plugin-WARNING **: failed to get contents of /sys/class/dmi/id/board_version: Failed to open file '/sys/class/dmi/id/board_version': No such file or directory

** (gnome-settings-daemon:3572): WARNING **: You can only run one xsettings manager at a time; exiting

** (gnome-settings-daemon:3572): WARNING **: Unable to start xsettings manager: Could not initialize xsettings manager.
compiz (core) - Error: Screen 0 on display "localhost:10.0" already has a window manager; try using the --replace option to replace the current window manager.
Initializing nautilus-gdu extension
Created new window in existing browser session.
** Message: applet now removed from the notification area
** Message: using fallback from indicator to GtkStatusIcon

(gnome-settings-daemon:3572): keyboard-plugin-WARNING **: Failed to set the keyboard layouts: GDBus.Error:org.freedesktop.Accounts.Error.PermissionDenied: Not authorized

** (gnome-settings-daemon:3572): WARNING **: Failed to connect context: Connection refused

(gnome-settings-daemon:3572): clipboard-plugin-WARNING **: Clipboard manager is already running.

(gnome-settings-daemon:3572): color-plugin-WARNING **: failed to create device: GDBus.Error:org.freedesktop.ColorManager.Failed: failed to obtain org.freedesktop.color-manager.create-device auth

(gnome-settings-daemon:3572): color-plugin-WARNING **: GDBus.Error:org.freedesktop.ColorManager.Failed: failed to obtain org.freedesktop.color-manager.create-profile auth

(gnome-settings-daemon:3572): color-plugin-WARNING **: no xrandr-Samsung Electric Company-SAMSUNG device found: Failed to find output xrandr-Samsung Electric Company-SAMSUNG
Shutting down nautilus-gdu extension

** (gnome-settings-daemon:3572): WARNING **: Failed to connect context: Connection refused
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
benlad
źródło
Chciałem uzyskać zdalny dostęp do maszyny Ubuntu używanej jako serwer / odtwarzacz multimediów bez zmiany tego, co dzieje się na wyświetlaczu zdalnego komputera. Chciałem też pobawić się tymi rzeczami, aby zobaczyć, co może zrobić. :-)
benlad
1
Jeśli chcesz się pobawić, podałem odpowiedź z kilkoma wskazówkami na temat korzystania z podstawowego ssh z wiersza poleceń, w tym generowania klucza i kopiowania go do zdalnego hosta. Gdy nauczysz się korzystać z ssh, możesz być zaskoczony, jak wiele można z niego zrobić.
Marty Fried

Odpowiedzi:

12

Zakładam, że to, co próbujesz zrobić, to rozpocząć pełną zdalną sesję Gnome wyświetlaną na twoim komputerze lokalnym. Nie udaje się to, ponieważ masz już lokalnego menedżera sesji sterującego wyświetlaniem serwera X.

Twoje opcje to:

  1. Wystarczy uruchomić poszczególne zdalne aplikacje za pomocą ssh -X [email protected] xclock

  2. Zakładając, że XDMCP jest włączony na zdalnym komputerze ...

    2a. Służy Xnest -query 192.168.1.107 -geometry 1024x768 :1do uruchamiania zdalnej sesji logowania w lokalnym oknie.

    2b. Użyj Xephyr :1 -screen 1024x768 -query 192.168.1.107lepszego serwera X niżXnest

  3. Zakładając również XDMCP na komputerze zdalnym, skonfiguruj komputer lokalny, aby używał selektora XDMCP zamiast standardowego programu uruchamiającego podczas uruchamiania.

Włączenie XDMCP to po prostu kwestia wprowadzenia

[xdmcp]
Enable=true

in /etc/gdm/custom.confi restartowanie gdmlub restartowanie (zakładając, że jesteś uruchomiony gdm).

Jeśli zamierzasz uruchamiać tylko kilka aplikacji zdalnie, wówczas opcja 1 jest najprostsza i nadal używa szyfrowanego ruchu SSH, czego nie robią żadne inne (więc najlepiej używać ich tylko w zaufanej sieci lokalnej).

Jeśli potrzebujesz czegoś bardziej skomplikowanego, może być lepszy 2b (Xephyr), ale zwykle uważam, że wystarczające jest używanie ssh -X ... &wielu zdalnych aplikacji.

Jeśli robisz wszystko zdalnie, tzn. Komputer lokalny jest tylko serwerem wyświetlającym i sam nic nie robi, musisz skorzystać z opcji 3, uruchamiając selektor XDMCP zamiast standardowego logowania.


PS: Jak zauważył w komentarzach, jak Xnesti Xephyrto aplikacje obsługujące protokół serwera X i umieścić całą sesję w oknie. Xnestkorzysta z funkcji udostępnianych przez lokalny serwer X i Xephyrobsługuje znacznie więcej samego protokołu serwera, dzięki czemu jest bardziej niezawodny. Nie mogą być instalowane domyślnie, ponieważ przeciętny użytkownik ich nie używałby.


PPS: Po krótkiej przemyśleniu oczywiste jest, jak zaszyfrować sesję Xephyrlub Xnest...

ssh -X [email protected] Xephyr :1 -query localhost -screen 1280x1024
StarNamer
źródło
1
Może być użyteczne, aby wskazać, co robią Xnest / Xephyr i dlaczego, ponieważ nie są domyślnie instalowane, nie sądzę. Nigdy nie znalazłem potrzeby używania xdmcp, więc sam nie mam pojęcia. Używam prostego ssh -Yz terminala, a następnie uruchamiam to, czego potrzebuję.
Marty Fried
@MartyFried: Wygląda na to, że oba są serwerami X, które mogą działać w oknie. Wygląda na to, że użytkownik chce przesłać X całą sesję / ekran. Osobiście użyłbym VNC, który tworzy nowy ekran na istniejącym serwerze X i oszczędziłbym sobie bólu głowy.
ish
@izx: W przeszłości używałem VNC do systemów Windows, ale w przypadku dwóch systemów Ubuntu zwykle lubię wbudowany ssh, chociaż czasami mylę się, gdy uruchamiam aplikacje GUI, ponieważ trudno jest odróżnić aplikacje lokalne od zdalnych. Ale to, co robię (głównie edytuję z serwera lub administruję nim), wydaje się działać najlepiej.
Marty Fried
1
@MartyFried Minusem VNC jest to, że po prostu kontrolujesz wyświetlacz zdalnego urządzenia. Dlatego nie możesz mieć jednego użytkownika zalogowanego na tym ekranie z innym użytkownikiem podłączonym zdalnie. Rozwiązania XDMCP tworzą całkowicie oddzielne sesje, umożliwiając co najmniej 2 użytkownikom korzystanie z tej samej maszyny.
StarNamer
Twoje rozwiązanie 2b sprawdziło się. Próbowałem wersji ssh, ale miałem problem z kluczami ssh. Wiadomość jest za długa, aby opublikować tutaj. Użyję metody, która na razie działa.
benlad
0

Na wypadek, gdybyś chciał nauczyć się korzystać ze standardowego ssh z terminala, pomyślałem, że dam ci krótkie podsumowanie, ponieważ wydaje się, że miałeś problemy z używaniem kluczy ssh. Zaletą jest to, że jest bardziej uniwersalny i bardzo elastyczny.

Aby użyć kluczy ssh, które są bezpieczniejsze, czasem wymagane i wygodniejsze, ponieważ wystarczy wprowadzić klucz tylko raz, musisz to zrobić raz dla dowolnego zdalnego serwera ssh:

wygeneruj klucz (w razie potrzeby można użyć dsa zamiast rsa)

ssh-keygen -t rsa    

przenieś klucz do zdalnego hosta

ssh-copy-id <username>@<host>

jeśli nie jest to standardowy port 22, użyj tego: Uwaga: cytat wokół argumentu

ssh-copy-id "<username>@<host> -p <port_nr>"

Jeśli używasz dsa, istnieje nieco inna komenda, dodawanie -i <homedirectory>/.ssh/id_dsa

Gdzieś po tym będziesz musiał wprowadzić hasło, które jest inne niż normalne hasło logowania. Minęło trochę czasu i zapomniałem o dokładnej sekwencji, ale powinno to być oczywiste. Następnie przy pierwszym połączeniu zostaniesz poproszony o podanie tego hasła. Używam tej samej nazwy logowania, więc nie muszę wprowadzać nazwy użytkownika (przyjmuje ona taką samą nazwę jak nazwa użytkownika zdalnego). Ponadto w przypadku serwerów w sieci LAN można wprowadzić „.local” zamiast adresu IP (jak dla mnie działa).

Możesz nawet zamontować zdalny system plików za pomocą sshfs (zakładając, że sshfs jest zainstalowany); zastąp ścieżkę katalogu do lokalnego katalogu montowania:

sshfs remote-host: local-mount-directory

(odmontować za pomocą fusermount -u local-mount-directory)

Myślę, że domyślnie użyje twojego katalogu domowego, jeśli opuścisz lokalny katalog montowania. `

Kopiowanie plików można wykonać za pomocą scp.

Marty Fried
źródło