Jawaban:
Anda dapat membuat koneksi kedua dengan penerusan X11 diaktifkan, dan kemudian Anda juga dapat menggunakan DISPLAY
variabel lingkungan dari koneksi kedua di yang pertama.
Di jendela 1:
$ ssh user@host
user@host$ ...
Di jendela ke-2:
$ ssh -Y user@host 'echo $DISPLAY; while sleep 3600; do :; done'
localhost:10.0
Kembali ke jendela 1:
user@host$ export DISPLAY=localhost:10.0
user@host$ xterm
Sayangnya, ssh
tidak melakukan apa pun yang berisi penerusan X11 (atau lainnya) pada proses / sesi yang dimulai atau kepada pengguna yang dijalankannya seperti pada mesin jarak jauh (mis. Dengan menggunakan soket Unix dengan / keluar memeriksa kredensial, atau dengan menggunakan ruang nama), dan penerusan itu adalah soket pendengar tcp sederhana yang dapat disambungkan oleh siapa pun di mesin jarak jauh; semua keamanan penerusan X11 bergantung pada otentikasi X11.
Halaman sshd_config(5)
manual menyebutkan bahwa:
menonaktifkan penerusan X11 tidak mencegah pengguna meneruskan lalu lintas X11, karena pengguna selalu dapat menginstal penerusan mereka sendiri.
Inilah cara Anda dapat melakukannya dengan tangan.
Pertama-tama, pastikan untuk menonaktifkan kontrol akses berbasis host atau pengguna yang memintas mekanisme auth x11 [1]:
$ xhost $(xhost | sed -n /:/s/^/-/p)
access control enabled, only authorized clients can connect
Kemudian perlihatkan info auth untuk DISPLAY=:0
di mesin lokal:
$ xauth list :0
ohzd/unix:0 MIT-MAGIC-COOKIE-1 a86982ddce0c1e1c1a8c5e8b2846e43b
Hubungkan ke mesin jarak jauh tanpa penerusan X11:
$ ssh user@hzy64
user@hzy64's password:
[motd snipped]
Buka baris perintah via ~C
dan tambahkan penerusan jarak jauh dari port 6000+43
ke soket unix yang sesuai untuk ditampilkan :0
:
hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.
Atur $DISPLAY
envvar dan tambahkan info auth dari lokal ke mesin jarak jauh:
hzy64$ export DISPLAY=localhost:43
hzy64$ xauth add $DISPLAY . a86982ddce0c1e1c1a8c5e8b2846e43b
xauth: file /home/user/.Xauthority does not exist
Sekarang Anda siap untuk pergi:
hzy64$ xterm
[1] karena perbaikan bug yang salah arah , kontrol akses berbasis pengguna diaktifkan secara default di Debian via /etc/X11/Xsession.d/35x11-common_xhost-local
. Lebih buruk lagi, ini adalah satu-satunya yang tersedia secara default di XWayland di mana ia juga tidak dapat dimatikan . Program apa pun yang proksi dari protokol X11 (mis. xscope
) Harus melakukan pengecekan cookie auth sendiri x11 (seperti yang dilakukan ssh), kecuali ia ingin membuka lubang yang menganga ke server X11.
-X
akan sedikit lebih baik daripada -Y
, bukan?
-X
, hanya dengan -Y
. orang-orang tidak memperhatikan hal itu karena pada banyak sistem (mis. debian) ForwardX11Trusted
diatur ke yes
default, -X
dan -Y
opsi-opsi itu setara ;-)
change $DISPLAY to
. Judul pertanyaan saat ini tidak dapat ditampilkan secara penuh dalam hasil pencarian, dan mengubah $ DISPLAY benar-benar bagian dari jawaban, bukan bagian dari pertanyaan.