Saya ingin membuka sesi desktop jarak jauh dari laptop saya ke desktop melalui terowongan SSH (terbalik). Itu seharusnya 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 Team Viewer.
Inilah tampilan 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 apa pun pada router nat.
Saya akan menjelaskan terowongan SSH saya karena pemahaman yang tampaknya diperlukan dalam memecahkan masalah VNC / desktop jarak jauh yang merupakan inti dari pertanyaan saya. Mengenai kaki ini:
middleman<--nat<--desktop
…inilah cara pembuatannya:
autossh -M 5234 -N -f -R 1234:localhost:22 [email protected]
Mengenai kaki ini:
laptop--->nat--->middleman
Saya dapat terhubung ke perantara sebagai berikut:
[email protected]:~$ ssh -i ~/.ssh/id_rsa [email protected]
Namun, yang sebenarnya perlu saya lakukan adalah terhubung langsung ke desktop, bukan ke perantara. Untuk melakukan itu saya menggunakan netcat (“nc”) pada perantara. Berdasarkan ini tampaknya nc diperlukan. Jadi saya mengedit file konfigurasi SSH saya di laptop untuk menggunakan ProxyCommand dan nc:
[email protected]:~/.ssh$ nano config
Isinya adalah:
Host family_desktops
ProxyCommand ssh middleman_fqdn nc localhost %p
User admin
PasswordAuthentication no
IdentityFile ~/.ssh/my_id_rsa
Dimana middleman_fqdn
seperti “perantara.com”
Kemudian saya hanya terhubung ke "desktop" dalam satu langkah:
[email protected]:~$ ssh family_desktops -p 1234
(Saya mendapatkan ini bekerja 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 di komputer saya berlabel desktop
. Sempurna.
Sekarang saya hanya membutuhkan solusi desktop jarak jauh seperti VNC (atau mirip TeamViewer) melalui terowongan SSH ini. Bagaimana?
Inilah yang telah 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 itu terhubung ke port 5901, dan memang begitu.
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
Penyiapan terowongan:
[email protected]:~$ 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 ada di ProxyCommand dan mana yang harus ada di baris perintah ssh. Saya dapat melihat beberapa masalah potensial dengan penyiapan saya, tetapi saya belum dapat mengetahui apa yang akan membuat semuanya berfungsi.
Terkait:Bunuh semua pekerjaan latar belakang?P.S. Seperti yang disebutkan, saya telah mengajukan beberapa pertanyaan tentang ini. Beberapa di antaranya membawa saya lebih dekat ke solusi dan membentuk dasar dari pertanyaan saya saat ini. Pertanyaan saya sebelumnya tentang topik ini hanya menunjukkan ketidaktahuan dan ketidakmampuan saya untuk mengajukan pertanyaan dalam bentuk yang benar. Pada titik ini, pertanyaan ini mewakili kemampuan terbaik saya untuk menyatakan apa masalah saya dan apa solusi yang saya inginkan, tetapi beberapa pertanyaan saya yang lain masih terbuka juga. Inilah salah satu yang relevan.
Jawaban yang Diterima:
Bisakah Anda mencoba melakukan langkah kedua tanpa melakukan nc? Yaitu – lakukan VNC hanya dengan -L dan -R. Saya yakin masalahnya adalah sesi netcat Anda terhubung kembali ke sesi yang sudah terbuka. Jadi saat melakukan hal-hal VNC jangan gunakan netcat.