Jawaban:
Anda dapat membuat koneksi kedua dengan penerusan X11 diaktifkan, dan kemudian Anda juga dapat menggunakan DISPLAYvariabel 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, sshtidak 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=:0di 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 ~Cdan tambahkan penerusan jarak jauh dari port 6000+43ke soket unix yang sesuai untuk ditampilkan :0:
hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.
Atur $DISPLAYenvvar 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.
-Xakan sedikit lebih baik daripada -Y, bukan?
-X, hanya dengan -Y. orang-orang tidak memperhatikan hal itu karena pada banyak sistem (mis. debian) ForwardX11Trusteddiatur ke yesdefault, -Xdan -Yopsi-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.