Віддалений x-сервер з ssh -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, яка використовується як медіа-сервер / плеєр, не змінюючи того, що відбувається на дисплеї віддаленої машини. Також я просто хотів пограти з цим матеріалом, щоб побачити, що він може зробити. :-)
бенлад

1
Якщо ви хочете пограти, я вписав відповідь з кількома порадами щодо використання базового ssh з командного рядка, включаючи створення ключа та копіювання його на віддалений хост. Як тільки ви навчитеся використовувати ssh, ви можете здивуватися, скільки можна зробити за допомогою нього.
Марті Фрід

Відповіді:


12

Я припускаю, що ви намагаєтеся це почати повний віддалений сеанс Gnome, який відображатиметься на вашій локальній машині. Це не вдається, оскільки у вас уже є локальний менеджер сеансів, який контролює ваш X-сервер.

Ваші варіанти:

  1. Просто запустіть окремі віддалені програми за допомогою ssh -X user@192.168.1.107 xclock

  2. Припустимо, що XDMCP увімкнено на віддаленій машині ...

    2а. Використовуйте Xnest -query 192.168.1.107 -geometry 1024x768 :1для запуску сеансу віддаленого входу в локальне вікно.

    2б. Використовуйте, 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: Як зазначено в коментарях, Xnestі Xephyrце, і додатки, які обробляють протокол X-сервера і складають весь сеанс у вікно. Xnestвикористовує функції, що надаються локальним сервером X, в той час як Xephyrобробляє набагато більше самого серверного протоколу, тому є більш надійним. Вони можуть бути встановлені за замовчуванням, оскільки середній користувач не використовує їх.


PPS: Після невеликої думки очевидно, як зашифрувати Xephyrабо Xnestсеанс ...

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

1
Може бути корисним вказати, що робити Xnest / Xephyr і чому, оскільки вони не встановлені за замовчуванням, я не думаю. Я ніколи не знаходив жодної потреби використовувати xdmcp, тому сам не маю уявлення. Я використовую простий ssh -Yз терміналу, а потім запускаю звідти те, що мені потрібно.
Марті Фрід

@MartyFried: Схоже, що обидва - це X-сервери, які можуть працювати у вікні. Схоже, користувач хоче передати цілий сеанс / дисплей X. Особисто я просто використовую VNC, який створює новий дисплей на існуючому сервері X і врятує себе від головного болю.
Останній

@izx: Раніше я використовував VNC для систем Windows, але з двома системами Ubuntu мені зазвичай подобається вбудований ssh, хоча іноді я плутаюся при запуску програм GUI, оскільки важко розмежувати локальні та віддалені програми. Але для того, що я роблю (переважно редагування або адміністрування сервера), воно, здається, працює найкраще.
Марті Фрід

1
@MartyFried Недоліком VNC є те, що ви просто керуєте дисплеєм віддаленої машини. Таким чином, ви не можете мати одного користувача, який увійшов на цей дисплей з іншим користувачем, підключеним віддалено. Рішення XDMCP містять повністю окремі сеанси, що дозволяють 2 або більше користувачів використовувати одну машину.
StarNamer

Ваш розчин 2b працював частуванням. Я спробував ssh-версію, але в мене виникла проблема з ключами ssh. Повідомлення занадто довго для публікації тут. Я зараз використовуватиму метод, який працює.
бенлад

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

Десь після цього вам потрібно буде ввести пароль, який є окремим від вашого звичайного пароля для входу. Минув час, і я забув точну послідовність, але це має бути очевидним. Тоді, коли ви вперше підключитесь, вам буде запропоновано цей пароль один раз. Я використовую те саме ім’я для входу, тому мені не потрібно вводити ім’я користувача (воно передбачає те саме, що і віддалене ім’я користувача). Також, я вважаю, що для серверів на вашому LAN ви можете ввести ".local" замість IP-адреси (працює для мене).

Ви навіть можете монтувати віддалену файлову систему за допомогою sshfs (якщо припустимо, що sshfs встановлено); замініть шлях до каталогу для local-mount-каталога:

sshfs remote-host: local-mount-directory

(відключити використання fusermount -u local-mount-directory)

Я думаю, що він використовуватиме ваш домашній каталог за замовчуванням, якщо ви вимкнете локальний каталог-mount. `

Копіювання файлів можна виконати за допомогою scp.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.