Remote desktop melalui reverse tunnel SSH untuk menggantikan TeamViewer

14

Saya ingin membuka sesi desktop jarak jauh dari laptop saya ke desktop melalui terowongan SSH (terbalik) saya. Itu harus sederhana (atau setidaknya bisa dilakukan), bukan? Sampai sekarang saya telah menggunakan Team Viewer untuk masuk ke desktop jarak jauh. Saya ingin mencapai hasil yang serupa tanpa Penampil Tim.

Seperti inilah terowongan SSH saya:

laptop--->nat--->middleman<--nat<--desktop

Semua mesin menjalankan Linux (kebanyakan Kubuntu 12.04 atau OpenSuse 12.3). Saya tidak dapat mengubah port apa pun atau membuat perubahan konfigurasi pada router nat.

Saya akan menjelaskan terowongan SSH saya karena pemahaman yang tampaknya diperlukan dalam menyelesaikan masalah VNC / desktop jarak jauh yang merupakan jantung dari pertanyaan saya. Mengenai kaki ini:

middleman<--nat<--desktop

... di sini adalah bagaimana ia didirikan:

autossh -M 5234 -N -f -R 1234:localhost:22 [email protected]

Mengenai kaki ini:

laptop--->nat--->middleman

Saya dapat terhubung ke perantara sebagai berikut:

me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman  

Namun, apa yang sebenarnya perlu saya lakukan adalah terhubung langsung ke desktop, bukan ke tengkulak. Untuk melakukan itu saya menggunakan netcat ("nc") pada perantara. Berdasarkan ini nc diperlukan. Jadi saya mengedit file konfigurasi SSH saya di laptop untuk menggunakan ProxyCommand dan nc:

me@laptop:~/.ssh$ nano config

Isinya adalah:

Host family_desktops
  ProxyCommand ssh middleman_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Di mana middleman_fqdnseperti "middleman.com"

Lalu saya hanya terhubung ke "desktop" dalam satu langkah:

me@laptop:~$ ssh family_desktops -p 1234

(Saya mendapatkan pekerjaan ini berdasarkan bantuan di sini dan di sini dan pertanyaan terkait lainnya yang saya ajukan. Saya telah mengajukan banyak pertanyaan tentang topik ini karena saya telah bergulat dengannya selama berminggu-minggu.)

Dengan koneksi SSH ini saya mencapai shell yang berfungsi penuh pada komputer saya berlabel desktop. Sempurna.

Sekarang saya hanya perlu solusi desktop jarak jauh seperti VNC (atau mirip TeamViewer) di atas terowongan SSH ini. Bagaimana?

Inilah yang saya coba sejauh ini:

perantara <- nat <- desktop

autossh -M 5235 -N -f -R 1235:localhost:5901 [email protected]

dengan koneksi yang dibuat:

x11vnc -autoport 5901 

Saya menonton untuk memastikan terhubung ke port 5901, yang ia lakukan.

laptop ---> nat ---> perantara <- nat <- desktop

laptop ~ / .ssh / config:

Host family_desktops
  ProxyCommand ssh -NL 5901:localhost:1235 middleman.com nc localhost 1235
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Pengaturan terowongan:

me@laptop:~$ sudo ssh family_desktops

Klien VNC:

connect to localhost:5901

Ini memberikan kesalahan "server tidak ditemukan"

Saya telah mencoba sejumlah variasi pada ProxyCommand, tidak ada satupun yang berhasil. Jelas, saya menebak parameter mana yang harus di ProxyCommand dan yang harus di baris perintah ssh. Saya dapat melihat beberapa masalah potensial dengan pengaturan saya, tetapi saya belum dapat menemukan apa yang akan membuat semuanya berfungsi.

PS Seperti yang disebutkan, saya telah mengajukan beberapa pertanyaan tentang ini. Beberapa dari mereka membawa saya lebih dekat ke solusi dan membentuk dasar dari pertanyaan saya saat ini. Lain dari pertanyaan saya sebelumnya tentang topik ini hanya menunjukkan ketidaktahuan dan ketidakmampuan saya untuk mengajukan pertanyaan dalam bentuk yang benar. Pada titik ini, pertanyaan ini menunjukkan kemampuan terbaik saya untuk menyatakan apa masalah saya dan apa solusi yang saya inginkan, tetapi beberapa pertanyaan saya yang lain masih terbuka juga. Inilah yang relevan.

MountainX
sumber
1
Catatan: Jangan gunakan tautan "di sini" atau "ini" . Berikan nama yang bermakna untuk tautan Anda, misalnya judul pertanyaan atau halaman web yang Anda tautkan.
Marco
Bukankah Anda menanyakan pertanyaan ini sebelumnya? unix.stackexchange.com/questions/82255/…
slm
@slm - lihat beberapa tautan di pertanyaan saya. Mereka adalah beberapa pertanyaan terkait saya. Saya masih mencoba untuk mencapai solusi dan setiap pertanyaan tampaknya membuat saya lebih dekat ...
MountainX
Ini tampaknya sangat berbelit-belit. Saya menggunakan remote desktop mesin Windows 8 saya dengan SSH'ing ke mesin juga di jaringan yang sama yang memiliki port terbuka di firewall untuk itu.
Tim
@Tim ini adalah terowongan SSH terbalik dan diperlukan karena desktopberada di belakang router NAT dan di laptopbelakang router NAT.
MountainX

Jawaban:

3

Bisakah Anda mencoba melakukan langkah kedua tanpa melakukan nc? Yaitu - lakukan VNC hanya dengan -L dan -R. Saya percaya masalahnya adalah sesi netcat Anda terhubung kembali ke yang sudah terbuka. Jadi ketika melakukan hal-hal VNC jangan gunakan netcat.

prateek61
sumber
1

Alih-alih ProxyCommand, Anda harus mengatur "gatewayports ya" untuk perantara Anda sshd.conf.

  1. Lalu bawa remote tunnel dari desktop ke perantara dan buka tcp port x di perantara dan vnc di lokal.
  2. Kemudian bawa tunnel lokal dari laptop ke perantara yang membuka port vnc ke localhost Anda dan tunneling ke x.
  3. Kemudian hubungkan ke localhost: vnc, jadi itu akan pergi melalui terowongan lokal ke perantara dan terowongan jauh ke laptop vnc.

Setelah Anda membuatnya berfungsi, pelajari lebih lanjut tentang pengaturan gatewayports yang lebih aman.

Limalski
sumber