Meneruskan X11 melalui SSH jika konfigurasi server tidak mengizinkannya

10

Pertimbangkan situasi di mana saya masuk lebih dari SSH dari mesin A ke mesin B, saya memiliki sesi X pada mesin A, dan saya ingin menjalankan program X pada B.

ssh -X Bmembuat pekerjaan ini transparan. Tetapi bagaimana jika konfigurasi server kurang X11Forwarding yes, saya tidak memiliki izin root di server, dan administrator server acuh tak acuh?

Jelas mungkin untuk meneruskan koneksi X11, karena saya dapat mentransfer apa pun yang saya inginkan melalui saluran SSH. Bahkan, jika server X lokal memungkinkan koneksi TCP, itu semudah ssh -R 6010:localhost:6000(disesuaikan dengan nomor tampilan). Bagaimana dengan kasus umum di mana server X lokal hanya memungkinkan koneksi soket? Bagaimana saya melakukan penerusan X dengan mudah dan aman, dengan persyaratan instalasi minimum (terutama pada B)?

Gilles 'SANGAT berhenti menjadi jahat'
sumber

Jawaban:

2

@Emi Jawabannya bagus tapi saya pikir mengisinya akan sangat membantu.

  • local - mesin lokal yang melayani Xserver.
  • remote - mesin jarak jauh yang melayani aplikasi yang mengarahkan data ke Xserver

Jarak jauh /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

Remote ~/.Xauthoritykosong atau tidak ada

Di lokal:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

Dalam pengujian, lokal menjalankan Ubuntu 18.05, remote menjalankan Debian Jesse.

Craig Hicks
sumber
6

Apakah protokol X11 berbicara ketika berbicara dengan port tcp berbeda ketika berbicara dengan soket?

Mungkin Anda bisa menggabungkan penggunaan yang disarankan sendiri ssh -R 6010:localhost:6000untuk membawa data X11 ke dalam port forwarding, kemudian menjembatani gab lokal antara port tcp dan pendengar socket X11 dengan nc seperti:

nc -l -p 6000 > /tmp/.X11-unix/X0
Caleb
sumber
Ya, itulah idenya. Tapi saya berharap jawaban yang mengatakan "letakkan ini di .ssh/configsisi klien Anda dan itu di .profilesisi server Anda , dan kemudian jalankan ssh B".
Gilles 'SO- stop being evil'
1
Ada jawaban "taruh ini di konfigurasi Anda" yang mudah, masalahnya adalah Anda mengesampingkannya dalam kualifikasi pertanyaan Anda karena opsi yang Anda perlukan ada di sisi sshd_config pada B. Anda sedang mencoba mengerjakan blok yang dimasukkan ke dalam tempat untuk membuatnya sulit untuk secara tidak sengaja membuka masalah keamanan.
Caleb
3
Saya menargetkan (dalam pengalaman saya sangat umum) kasus di mana admin tidak peduli dan baru saja meninggalkan pengaturan default di tempat. Penerusan X11 tidak dilarang oleh kebijakan, itu hanya ketidaknyamanan oleh ketidakpedulian sysadmin. Bagaimanapun, penerusan X11 memungkinkan server untuk menyerang klien, jadi pelarangan itu sisi server tidak masuk akal.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles Saya setuju bahwa defaultnya tidak benar-benar melindungi dari sesuatu yang berguna. Jadi haruskah kita melobi untuk mengubah default ke hulu?
Caleb
Bagi saya, /tmp/.X11-unix/X0adalah soket domain unix, bukan FIFO, sehingga setiap upaya pengalihan berakhir dengan ENXIO: No such device.
Samveen
2
  1. Putar server X tambahan menggunakan Xephyr. Ini untuk keamanan - mencegah sistem jarak jauh dari kompromi Anda.

  2. Gunakan SSH untuk meneruskan soket jarak jauh ke soket Xephyr. SSH juga mendukung penerusan soket Unix.

  3. Atur variabel lingkungan di server jauh dengan benar.

Demi
sumber