Remote x-server dengan ssh -X

12

Saya mencoba memulai sesi gnome jarak jauh menggunakan: ssh -X [email protected] gnome-session

Baik klien dan server adalah versi Ubuntu 12.04

Saya mendapatkan yang berikut (dan tidak banyak yang terjadi) ...

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
sumber
Saya ingin mengakses mesin Ubuntu yang digunakan sebagai server / pemutar media dari jarak jauh tanpa mengubah apa yang terjadi pada tampilan mesin jarak jauh. Saya juga hanya ingin bermain-main dengan hal ini untuk melihat apa yang bisa dilakukannya. :-)
benlad
1
Jika Anda ingin bermain-main, saya memasukkan jawaban dengan beberapa tips untuk menggunakan ssh dasar dari baris perintah, termasuk menghasilkan kunci dan menyalinnya ke host jarak jauh. Setelah Anda belajar menggunakan ssh, Anda mungkin akan terkejut betapa banyak yang bisa dilakukan dengan menggunakannya.
Marty Fried

Jawaban:

12

Saya berasumsi bahwa apa yang Anda coba lakukan adalah memulai sesi Gnome jarak jauh lengkap yang ditampilkan pada mesin lokal Anda. Ini gagal karena Anda sudah memiliki manajer sesi lokal yang mengendalikan tampilan server X Anda.

Pilihan Anda adalah:

  1. Cukup jalankan aplikasi remote individual menggunakan ssh -X [email protected] xclock

  2. Dengan asumsi XDMCP diaktifkan pada mesin jarak jauh ...

    2a. Gunakan Xnest -query 192.168.1.107 -geometry 1024x768 :1untuk memulai sesi login jarak jauh di jendela lokal.

    2b. Gunakan Xephyr :1 -screen 1024x768 -query 192.168.1.107yang merupakan server X yang lebih baik daripadaXnest

  3. Juga dengan asumsi XDMCP pada mesin jarak jauh, konfigurasikan mesin lokal Anda untuk menggunakan pemilih XDMCP alih-alih penyambut standar saat startup.

Mengaktifkan XDMCP hanyalah kasus menempatkan

[xdmcp]
Enable=true

masuk /etc/gdm/custom.confdan mulai ulang gdmatau reboot (dengan asumsi Anda menjalankan gdm).

Jika Anda hanya ingin menjalankan beberapa aplikasi dari jarak jauh, maka opsi 1 adalah yang paling sederhana dan terus menggunakan lalu lintas terenkripsi SSH, yang tidak dilakukan oleh yang lain (jadi yang terbaik hanya digunakan pada jaringan lokal tepercaya).

Jika Anda perlu sesuatu yang lebih rumit, maka 2b (Xephyr) mungkin lebih baik, tetapi saya biasanya hanya menggunakan ssh -X ... &beberapa aplikasi jarak jauh untuk mencukupi.

Jika Anda melakukan semuanya dari jarak jauh, yaitu mesin lokal hanya server tampilan dan tidak melakukan apa-apa sendiri, maka Anda perlu melihat ke dalam menggunakan opsi 3, memulai pemilih XDMCP bukan login standar.


PS: Seperti tercantum dalam komentar, baik Xnestdan Xephyraplikasi yang menangani protokol X server dan menempatkan seluruh sesi ke jendela. Xnestmenggunakan fungsi yang disediakan oleh server X lokal sementara Xephyrmenangani lebih banyak protokol server itu sendiri sehingga lebih kuat. Mereka mungkin tidak diinstal secara default karena rata-rata pengguna tidak akan menggunakannya.


PPS: Setelah sedikit berpikir, sudah jelas bagaimana cara mengenkripsi Xephyratau Xnestsesi ...

ssh -X [email protected] Xephyr :1 -query localhost -screen 1280x1024
StarNamer
sumber
1
Mungkin bermanfaat untuk menunjukkan apa yang dilakukan Xnest / Xephyr dan mengapa, karena mereka tidak diinstal secara default, saya tidak berpikir. Saya tidak pernah menemukan kebutuhan untuk menggunakan xdmcp, jadi saya sendiri tidak tahu. Saya menggunakan sederhana ssh -Ydari terminal, kemudian jalankan apa yang saya butuhkan dari sana.
Marty Fried
@ MartyFried: Sepertinya keduanya adalah server X yang dapat berjalan di jendela. Sepertinya pengguna ingin meneruskan seluruh sesi / tampilan. Secara pribadi saya hanya menggunakan VNC, yang menciptakan tampilan baru pada server X yang ada dan menyelamatkan diri saya dari sakit kepala.
ish
@izx: Saya pernah menggunakan VNC di masa lalu untuk sistem Windows, tetapi dengan dua sistem Ubuntu, saya biasanya suka ssh bawaan, walaupun kadang-kadang saya bingung ketika menjalankan aplikasi GUI, karena sulit membedakan aplikasi lokal dan aplikasi jarak jauh. Tetapi untuk apa yang saya lakukan (kebanyakan mengedit dari atau mengelola server), tampaknya berfungsi dengan baik.
Marty Fried
1
@ MartyFried Kelemahan dari VNC adalah Anda hanya mengendalikan tampilan mesin jarak jauh. Jadi Anda tidak dapat memiliki satu pengguna masuk pada layar itu dengan pengguna lain yang terhubung dari jarak jauh. Solusi XDMCP membuat sesi terpisah sepenuhnya yang memungkinkan 2 atau lebih pengguna menggunakan mesin yang sama.
StarNamer
Solusi 2b Anda berhasil. Saya memang mencoba versi ssh, tetapi memiliki masalah tentang kunci ssh. Pesannya terlalu panjang untuk dikirim di sini. Saya akan menggunakan metode yang berfungsi untuk saat ini.
benlad
0

Jika Anda pernah ingin belajar menggunakan ssh standar dari terminal, saya pikir saya akan memberi Anda ikhtisar cepat, karena Anda mengalami kesulitan menggunakan kunci ssh, tampaknya. Keuntungannya adalah lebih universal, dan sangat fleksibel.

Untuk menggunakan kunci ssh, yang lebih aman, kadang-kadang diperlukan, dan lebih nyaman karena Anda hanya perlu memasukkan kunci sekali, Anda perlu melakukan ini sekali untuk server ssh jarak jauh:

menghasilkan kunci (dapat menggunakan dsa bukan rsa, jika diperlukan)

ssh-keygen -t rsa    

mentransfer kunci ke host jarak jauh

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

jika bukan port standar 22, gunakan ini: Perhatikan kutipan di sekitar argumen

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

Jika menggunakan dsa, ada perintah yang sedikit berbeda, menambahkan -i <homedirectory>/.ssh/id_dsa

Di suatu tempat setelah ini, Anda harus memasukkan kata sandi, yang terpisah dari kata sandi masuk normal Anda. Sudah lama, dan saya lupa urutan yang tepat, tetapi harus jelas. Kemudian, saat pertama kali terhubung, Anda akan diminta kata sandi ini, sekali. Saya menggunakan nama login yang sama, jadi saya tidak perlu memasukkan nama pengguna (diasumsikan sama dengan nama pengguna jarak jauh). Juga, untuk server di lan Anda, Anda dapat memasukkan ".local" bukan alamat IP, saya percaya (berfungsi untuk saya).

Anda bahkan dapat memasang sistem file jarak jauh menggunakan sshfs (dengan asumsi sshfs diinstal); gantikan jalur direktori untuk direktori mount-lokal:

sshfs remote-host: local-mount-directory

(lepaskan penggunaan fusermount -u local-mount-directory)

Saya pikir itu akan menggunakan direktori home Anda secara default, jika Anda meninggalkan direktori local-mount-. `

Menyalin file dapat dilakukan dengan scp.

Marty Fried
sumber