带有SSH -X的远程X服务器


12

我正在尝试使用以下方法启动远程gnome会话: ssh -X username@192.168.1.107 gnome-session

客户端和服务器均为Ubuntu 12.04版本

我得到以下内容(并没有发生太多)...

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

我想远程访问用作媒体服务器/播放器的Ubuntu计算机,而不更改远程计算机显示屏上发生的情况。我也只是想玩这些东西,看看它能做什么。:-)
benlad

1
如果您想玩转,我输入了答案,并提供了一些从命令行使用基本ssh的技巧,包括生成密钥并将其复制到远程主机。一旦学习使用ssh,您可能会惊讶于使用它可以完成多少工作。
马蒂·弗里德

Answers:


12

我假设您要执行的操作是启动在本地计算机上显示的完整远程Gnome会话。之所以失败,是因为您已经有一个本地会话管理器来控制X服务器的显示。

您的选择是:

  1. 只需使用以下命令启动单个远程应用程序 ssh -X user@192.168.1.107 xclock

  2. 假设在远程计算机上启用了XDMCP ...

    2a。用于Xnest -query 192.168.1.107 -geometry 1024x768 :1在本地窗口中启动远程登录会话。

    2b。使用Xephyr :1 -screen 1024x768 -query 192.168.1.107哪个比X服务器更好Xnest

  3. 还要在远程计算机上假设使用XDMCP,请在启动时将本地计算机配置为使用XDMCP选择器,而不是标准欢迎程序。

启用XDMCP只不过是

[xdmcp]
Enable=true

/etc/gdm/custom.conf并重新启动gdm或重新启动(假设你正在运行gdm)。

如果您仅打算远程运行一些应用程序,则选项1最简单,它将继续使用SSH加密的通信,而其他通信都不会这样做(因此,最好仅在受信任的本地网络上使用它们)。

如果您需要更复杂的东西,那么2b(Xephyr)可能更好,但是我通常发现仅ssh -X ... &用于多个远程应用程序就足够了。

如果您要远程执行所有操作,即本地计算机只是一台显示服务器,并且本身不执行任何操作,则需要研究使用选项3,启动XDMCP选择器,而不是标准登录。


PS:如注释中所述,XnestXephyr都是处理X服务器协议并将整个会话放入窗口的应用程序。XnestXephyr处理更多服务器协议本身的同时使用本地X服务器提供的功能,因此更加健壮。默认情况下可能未安装它们,因为普通用户不会使用它们。


PPS:经过一番思考,很明显如何加密会话XephyrXnest会话...

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

1
指出Xnest / Xephyr的功能和原因可能很有用,因为默认情况下未安装它们,所以我认为。我从来没有发现过需要使用xdmcp,所以我自己也不知道。我ssh -Y从终端使用simple ,然后从那里运行所需的东西。
马蒂·弗里德

@MartyFried:看起来两个都是可以在窗口中运行的X服务器。看起来用户想要X转发整个会话/显示。就我个人而言,我只会使用VNC,它会在现有X服务器上创建一个新的显示,并省去了我的头痛。
ish 2012年

@izx:过去我在Windows系统上使用过VNC,但在两个Ubuntu系统上,我通常喜欢内置的ssh,尽管有时在运行GUI应用程序时会感到困惑,因为很难区分本地和远程应用程序。但是对于我所做的事情(主要是从服务器进行编辑或管理服务器),它似乎是最好的。
马蒂·弗里德

1
@MartyFried VNC的缺点是您仅在控制远程计算机的显示。因此,您不能让一个用户登录到该显示器,而另一用户远程连接。XDMCP解决方案创建了完全独立的会话,允许2个或更多用户使用同一台计算机。
StarNamer

您的2b解决方案效果不错。我确实尝试过ssh版本,但是有关ssh密钥的问题。该消息太长,无法在此处发布。我将使用目前适用的方法。
benlad

0

如果您想从终端学习使用标准的ssh,我想我会给您一个快速的总结,因为您在使用ssh密钥时遇到了麻烦。优点是它更通用且非常灵活。

要使用ssh密钥,因为它只需要输入一次密钥,因此更安全,有时是必需的并且更加方便,因为您只需输入一次密钥,就需要对任何远程ssh服务器执行一次此操作:

生成密钥(如果需要,可以使用dsa代替rsa)

ssh-keygen -t rsa    

将密钥转移到远程主机

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

如果不是标准端口22,则使用此端口:注意参数周围的引号

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

如果使用dsa,则有一个稍微不同的命令,添加 -i <homedirectory>/.ssh/id_dsa

之后,您将需要输入一个密码,该密码与您的常规登录密码是分开的。已经有一段时间了,我忘记了确切的顺序,但这应该很明显。然后,第一次连接时,系统将要求您输入一次密码。我使用相同的登录名,因此不需要输入用户名(它假定与远程用户名相同)。而且,对于您局域网上的服务器,我相信您可以输入“ .local”而不是IP地址(对我有用)。

您甚至可以使用sshfs挂载远程文件系统(假设已安装sshfs);将目录路径替换为local-mount-directory:

sshfs remote-host: local-mount-directory

(使用卸载fusermount -u local-mount-directory

我认为,如果您不使用local-mount-directory,它将默认使用您的主目录。`

可以使用scp复制文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.