Ketika SSH secara lokal masuk ke komputer saya (jangan tanya, ini solusinya), saya tidak bisa memulai aplikasi grafis tanpa menjalankan:
export DISPLAY=:0.0
Jika saya menjalankan ini terlebih dahulu dan kemudian menjalankan aplikasi grafis, semuanya berjalan lancar. Jika tidak, itu tidak berfungsi, tidak ada tampilan untuk dilampirkan.
Apakah ada perintah untuk mendaftarkan semua tampilan yang tersedia (yaitu: semua nilai yang mungkin) pada mesin?
( DISPLAY=:0 yourapp & )
.w
. Info lebih lanjut: daftar nama tampilan X yang ada?Jawaban:
Jika Anda ingin koneksi X diteruskan melalui SSH, Anda harus mengaktifkannya di sisi server dan sisi klien. (Tergantung pada distribusi, dapat diaktifkan atau dinonaktifkan secara default.) Di sisi server, pastikan bahwa Anda memiliki
X11Forwarding yes
di/etc/sshd_config
(atau/etc/ssh/sshd_config
atau di mana pun file konfigurasi). Pada sisi klien, lulus-X
pilihan untukssh
perintah , atau meletakkanForwardX11
di Anda~/.ssh/config
.Jika Anda menjalankan
ssh -X localhost
, Anda harus melihat itu$DISPLAY
(mungkin)localhost:10.0
. Kontras dengan:0.0
, yang merupakan nilai ketika Anda tidak terhubung melalui SSH. (Bagian.0
mungkin dihilangkan; ini adalah nomor layar, tetapi beberapa layar jarang digunakan.) Ada dua bentuk tampilan X yang mungkin Anda temui::
.:
.Dengan
ssh -X localhost
, Anda dapat mengakses server X melalui kedua tampilan, tetapi aplikasi akan menggunakan metode yang berbeda::NUMBER
mengakses server melalui soket lokal dan memori bersama, sedangkanHOSTNAME:NUMBER
mengakses server melalui TCP, yang lebih lambat dan menonaktifkan beberapa ekstensi.Perhatikan bahwa Anda memerlukan bentuk otorisasi untuk mengakses server X, yang disebut cookie dan biasanya disimpan di belakang layar dalam file
~/.Xauthority
. Jika Anda menggunakan ssh untuk mengakses akun pengguna yang berbeda, atau jika distribusi Anda menempatkan cookie dalam file yang berbeda, Anda mungkin menemukan ituDISPLAY=:0
tidak berfungsi dalam sesi SSH (tetapissh -X
akan, jika diaktifkan di server; Anda tidak pernah perlu dipusingkanXAUTHORITY
saat melakukanssh -X
). Jika itu masalah, Anda perlu mengaturXAUTHORITY
variabel lingkungan atau mendapatkan cookie pengguna lain .Untuk menjawab pertanyaan Anda yang sebenarnya:
Tampilan lokal sesuai dengan soket masuk
/tmp/.X11-unix
.Remote display sesuai dengan port TCP terbuka di atas 6000; mengakses nomor tampilan N pada mesin M dilakukan dengan menghubungkan ke port TCP 6000 + N pada mesin M. Dari mesin M sendiri:
(Sisa dari poin ini hanya untuk kepentingan akademis.)
Dari komputer lain, Anda dapat menggunakan
nmap -p 6000-6099 host_name
untuk menyelidiki port TCP terbuka dalam kisaran yang biasa. Saat ini jarang ada server X yang mendengarkan pada soket TCP, terutama di luar antarmuka loopback.Sebenarnya, aplikasi lain bisa menggunakan port dalam jangkauan yang biasanya digunakan oleh server X. Anda dapat mengetahui apakah server X sedang mendengarkan dengan memeriksa program mana yang portnya terbuka.
Jika itu menunjukkan sesuatu yang ambigu
sshd
, tidak ada cara untuk mengetahui dengan pasti apakah itu server X atau kebetulan.sumber
Layar adalah argumen pertama
Xorg
. Andaps
kemudian dapatXorg
keluar.Anda dapat melakukan
awk
ini ke format mana pun yang Anda inginkan.sumber
ps aux |grep X
bekerja lebih baik untuk sayaw
menunjukkan kepada semua orang yang masuk dan tampilan mereka.DISPLAY=:0 netsurf "https://medium.com/"
... atau gunakanexport DISPLAY=:0
untuk berbagi var dengan proses, bukan hanya shell[Sunting: Saya menjalankan instance Xnest untuk melihat apakah ini akan menangkapnya - tidak; hanya menangkap shell login ('w' adalah kependekan dari 'who'). Kembali ke papan gambar untuk saya.] [Sunting: Ditemukan:
]
sumber
ps xeww | grep DISPLAY=:1024
sekarang itu aneh. Saya sedang menjalankan chrome-remote-desktop pada layar 20 juga.w
tidak berfungsi jika tidak ada aplikasi yang berjalan di x server (termasuk tidak ada window manager dan tidak ada desktop). Tetapils /tmp/.X11-unix
berhasil.akan melakukan pekerjaan dengan mendaftar semua TAMPILAN saat ini. Anda juga dapat melihat tampilan yang ditetapkan untuk pengguna tertentu ($ usr) dengan:
sumber
ps e -u $USER | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u
?Dalam
/tmp
folder itu juga bisa ada.X??-lock
file dengan??
menunjukkan nomor sesi.Anda perlu menghapus ini jika Anda ingin menggunakan kembali nomor sesi.
Anda dapat melihatnya menggunakan
ls -a
file seperti biasa yang dimulai dengan file.
yang disembunyikan.sumber