Setelah `ssh` tanpa` -X` ke mesin, apakah mungkin untuk mengubah `$ DISPLAY` untuk membuatnya berfungsi seperti` ssh -X`?
22
Setelah sshtanpa -Xke mesin, apakah mungkin untuk mengubah beberapa pengaturan (misalnya $DISPLAY) untuk membuatnya berfungsi ssh -X? Jika tidak, apa alasannya? Terima kasih.
Saya sarankan untuk membuat judul pertanyaan lebih singkat dengan meninggalkan 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.
Dmitry Grigoryev
Jawaban:
33
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
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.
X11 Penerusan Dengan Tangan
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:
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.
Jika Anda peduli dengan keamanan, -Xakan sedikit lebih baik daripada -Y, bukan?
Stephen Kitt
13
banyak (sebagian besar?) program X11 tidak bekerja dengan -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.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:
Di jendela ke-2:
Kembali ke jendela 1:
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.X11 Penerusan Dengan Tangan
Halaman
sshd_config(5)
manual menyebutkan bahwa:Inilah cara Anda dapat melakukannya dengan tangan.
Pertama-tama, pastikan untuk menonaktifkan kontrol akses berbasis host atau pengguna yang memintas mekanisme auth x11 [1]:
Kemudian perlihatkan info auth untuk
DISPLAY=:0
di mesin lokal:Hubungkan ke mesin jarak jauh tanpa penerusan X11:
Buka baris perintah via
~C
dan tambahkan penerusan jarak jauh dari port6000+43
ke soket unix yang sesuai untuk ditampilkan:0
:Atur
$DISPLAY
envvar dan tambahkan info auth dari lokal ke mesin jarak jauh:Sekarang Anda siap untuk pergi:
[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.sumber
-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 keyes
default,-X
dan-Y
opsi-opsi itu setara ;-)