Remote-X-Server mit ssh -X


12

Ich versuche eine Remote-Gnome-Sitzung zu starten mit: ssh -X username@192.168.1.107 gnome-session

Sowohl Client als auch Server sind Ubuntu Version 12.04

Ich bekomme folgendes (und es passiert nicht viel) ...

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

Ich wollte remote auf einen Ubuntu-Computer zugreifen, der als Medienserver / -player verwendet wird, ohne zu ändern, was auf dem Display des Remote-Computers geschieht. Außerdem wollte ich nur mit diesem Zeug herumspielen, um zu sehen, was es kann. :-)
benlad

1
Wenn Sie herumspielen möchten, habe ich eine Antwort mit einigen Tipps zur Verwendung von einfachem ssh über eine Befehlszeile eingegeben, einschließlich der Generierung eines Schlüssels und des Kopierens auf den Remote-Host. Sobald Sie lernen, ssh zu verwenden, werden Sie überrascht sein, wie viel Sie damit tun können.
Marty Fried

Antworten:


12

Ich gehe davon aus, dass Sie versuchen, eine vollständige Remote-Gnome-Sitzung zu starten, die auf Ihrem lokalen Computer angezeigt wird. Dies schlägt fehl, da Sie bereits einen lokalen Sitzungsmanager haben, der die Anzeige Ihres X-Servers steuert.

Ihre Möglichkeiten sind:

  1. Starten Sie einfach einzelne Remote-Anwendungen mit ssh -X user@192.168.1.107 xclock

  2. Vorausgesetzt, XDMCP ist auf dem Remotecomputer aktiviert ...

    2a. Verwenden Sie Xnest -query 192.168.1.107 -geometry 1024x768 :1diese Option , um eine Remote-Anmeldesitzung in einem lokalen Fenster zu starten.

    2b. Verwenden Sie Xephyr :1 -screen 1024x768 -query 192.168.1.107einen besseren X-Server alsXnest

  3. Nehmen Sie auch XDMCP auf dem Remote-Computer an, und konfigurieren Sie Ihren lokalen Computer so, dass beim Start die XDMCP-Auswahl anstelle des Standard-Begrüßers verwendet wird.

Das Aktivieren von XDMCP ist einfach ein Putting

[xdmcp]
Enable=true

in /etc/gdm/custom.confund Neustart gdmoder Neustart (vorausgesetzt, Sie laufen gdm).

Wenn Sie nur einige Anwendungen remote ausführen möchten, ist Option 1 am einfachsten und verwendet weiterhin den SSH-verschlüsselten Datenverkehr, den keiner der anderen verwendet (daher werden sie am besten nur in einem vertrauenswürdigen lokalen Netzwerk verwendet).

Wenn Sie etwas komplizierteres tun müssen, ist 2b (Xephyr) vielleicht besser, aber ich habe in der Regel festgestellt, dass die Verwendung ssh -X ... &mehrerer Remoteanwendungen ausreichend ist.

Wenn Sie alles remote ausführen, dh der lokale Computer nur ein Anzeigeserver ist und selbst nichts ausführt, müssen Sie Option 3 verwenden, um den XDMCP-Choser anstelle der Standardanmeldung zu starten.


PS: Wie in den Kommentaren erwähnt, handelt es sich bei beiden Xnestund Xephyrum Anwendungen, die das X-Server-Protokoll verarbeiten und die gesamte Sitzung in einem Fenster anzeigen. XnestVerwendet die vom lokalen X-Server bereitgestellten Funktionen, Xephyrverarbeitet jedoch viel mehr des Serverprotokolls selbst und ist daher robuster. Sie werden möglicherweise nicht standardmäßig installiert, da der durchschnittliche Benutzer sie nicht verwenden würde.


PPS: Nach einigem Überlegen ist es offensichtlich, wie man eine Xephyroder eine XnestSitzung verschlüsselt ...

ssh -X username@192.168.1.107 Xephyr :1 -query localhost -screen 1280x1024

1
Könnte nützlich sein, um anzugeben, was Xnest / Xephyr macht und warum, da sie nicht standardmäßig installiert sind, glaube ich nicht. Ich habe noch nie die Notwendigkeit gefunden, xdmcp zu verwenden, daher habe ich selbst keine Ahnung. Ich benutze einfach ssh -Yein Terminal und starte dann, was ich von dort brauche.
Marty Fried

@MartyFried: Es sieht so aus, als ob beide X-Server in einem Fenster laufen können. Es sieht so aus, als ob der Benutzer eine ganze Sitzung / Anzeige weiterleiten möchte. Persönlich würde ich nur VNC verwenden, das eine neue Anzeige auf dem vorhandenen X-Server erstellt und mir die Kopfschmerzen erspart.
ish

@izx: Ich habe VNC in der Vergangenheit für Windows-Systeme verwendet, aber bei zwei Ubuntu-Systemen gefällt mir normalerweise das integrierte ssh, obwohl ich manchmal verwirrt bin, wenn ich GUI-Apps ausführe, da es schwierig ist, lokale von Remote-Apps zu unterscheiden. Aber für das, was ich mache (hauptsächlich Bearbeiten von oder Verwalten eines Servers), scheint es am besten zu funktionieren.
Marty Fried

1
@MartyFried Der Nachteil von VNC ist, dass Sie einfach die Anzeige des Remote-Computers steuern. Sie können also nicht einen Benutzer an diesem Bildschirm anmelden, während ein anderer Benutzer remote verbunden ist. Mit den XDMCP-Lösungen werden vollständig separate Sitzungen erstellt, sodass zwei oder mehr Benutzer denselben Computer verwenden können.
StarNamer

Ihre 2b-Lösung hat sich bewährt. Ich habe die ssh-Version ausprobiert, hatte aber ein Problem mit den ssh-Schlüsseln. Die Nachricht ist zu lang, um sie hier zu posten. Ich werde die Methode verwenden, die jetzt funktioniert.
Benlad

0

Für den Fall, dass Sie jemals von einem Terminal aus lernen möchten, den Standard-SSH zu verwenden, würde ich Ihnen einen kurzen Überblick geben, da Sie anscheinend Probleme mit der Verwendung von SSH-Schlüsseln hatten. Der Vorteil ist, dass es universeller und sehr flexibel ist.

Um ssh-Schlüssel zu verwenden, die sicherer, manchmal erforderlich und praktischer sind, da Sie den Schlüssel nur einmal eingeben müssen, müssen Sie dies einmal für jeden entfernten ssh-Server tun:

Schlüssel generieren (kann bei Bedarf dsa anstelle von rsa verwenden)

ssh-keygen -t rsa    

Übertragen Sie den Schlüssel zum Remote-Host

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

Wenn es sich nicht um Standard-Port 22 handelt, verwenden Sie Folgendes: Beachten Sie die Anführungszeichen um das Argument

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

Wenn Sie dsa verwenden, gibt es einen etwas anderen Befehl: das Hinzufügen -i <homedirectory>/.ssh/id_dsa

Irgendwann danach müssen Sie ein Passwort eingeben, das sich von Ihrem normalen Login-Passwort unterscheidet. Es ist eine Weile her und ich habe die genaue Reihenfolge vergessen, aber es sollte offensichtlich sein. Wenn Sie sich zum ersten Mal verbinden, werden Sie einmal nach diesem Kennwort gefragt. Ich benutze den gleichen Anmeldenamen, so dass ich den Benutzernamen nicht eingeben muss (er setzt den gleichen wie der entfernte Benutzername voraus). Außerdem können Sie für Server in Ihrem LAN ".local" anstelle der IP-Adresse eingeben, glaube ich (funktioniert bei mir).

Sie können sogar ein entferntes Dateisystem mit sshfs mounten (vorausgesetzt, sshfs ist installiert). Ersetzen Sie den lokalen Mount-Pfad durch einen Verzeichnispfad:

sshfs remote-host: local-mount-directory

(unmount using fusermount -u local-mount-directory)

Ich denke, dass es Ihr Ausgangsverzeichnis standardmäßig verwendet, wenn Sie das lokale Einhängeverzeichnis weglassen. `

Das Kopieren von Dateien kann mit scp erfolgen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.