Pertanyaan SSH tunnel melalui dua server untuk mengakses layanan web pada port 9091


apa yang saya miliki adalah layanan "telepon-rumah" yang dijalankan remote1 yang terhubung ke LAN1 melalui:

ssh -N -R 16864:localhost:22 <myuser.on.lan1>@<lan1.ip>

jadi dari terminal SSH LAN1 Saya dapat dengan mudah memuat terminal remote1 perbuatan:

ssh -l <myuser.on.remote1> -p 16864 localhost

remote1 menjalankan layanan daemon dengan panel web di port 9091 (Transmisi).

Jadi yang saya inginkan adalah terhubung ke antarmuka web ini di port 9091 di remote1, melalui LAN1 (yang sudah memiliki terowongan terbuka di pelabuhan 16864) dari mesin lokal saya.

jadi mungkin ini:

Local machine browser -> LAN1:16864 -> 22:REMOTE1:9091

Saya sudah mencoba beberapa perintah SSL yang berbeda berdasarkan apa yang saya baca SINI, SINI, SINI dan pengaturan asli didasarkan pada INI

Saya sudah mencoba hal-hal seperti ini, tapi saya yakin saya dekat tetapi cukup bingung tentang apa yang harus dilakukan:

ssh -t -L8080:localhost:5590 user@192.168.2.42 ssh -l user -p 16864 localhost -N

tapi tentu saja, jika saya bertanya di sini karena saya gagal total. Ada ahli untuk membantu saya dalam hal ini?

edit:

Saya tidak memiliki diagram tetapi saya akan menjelaskan dengan cara yang berbeda:

Saya memiliki 3 komputer linux:

  • REMOTE1 selalu-on raspPi di lokasi terpencil, yang saya tidak memiliki banyak akses ke konfigurasi jaringan
  • LAN1 selalu pada raspPi di lan lokal saya, di mana saya dapat mengatur port-forwarding, IP tetap dan DNS dinamis, tanpa masalah.
  • PC saya, yang saya ingin dapat mengakses layanan web REMOTE1

REMOTE1 melakukan "panggilan rumah" untuk menjaga koneksi SSH dengan LAN1 melalui:

ssh -N -R 16864:localhost:22 <myuser.on.lan1>@<lan1.ip>

dan bagian itu berfungsi dengan baik. Saya menggunakan terminal mesin lokal saya ke SSH LAN1, lalu masuk LAN1 mesin saya ketik:

ssh -l <myuser.on.remote1> -p 16864 localhost

dan saya bisa mengerjakan barang terminal REMOTE1.

Saat ini saya hanya mendapat layanan di 9091 (transmisi-daemon) tetapi saya akan menginstal beberapa hal lain nanti.

Jadi pertanyaannya, bagaimana cara tunnel dari mesin lokal saya untuk mengakses layanan web di port 9091 pada REMOTE1 melalui koneksi terowongan LAN1?

dengan cara yang sederhana:

  • mesin lokal: ssh 8888 <magic> 1684 <magic> 9091 <magic> -N
  • buka browser pada jenis localhost:8888/transmission/web/ dan mengaksesnya daemon transmisi REMOTE1

2
2018-06-23 23:19


asal


Saya butuh foto atau sesuatu. Saya tidak mengikuti apa yang perlu pergi ke mana. Dalam hal apapun, Anda mungkin harus menggunakan ProxyCommand ssh -W intermediate dari mesin lokal sehingga Anda dapat membangun terowongan tunggal antara host yang jauh dan host lokal. - Zoredache
Terima kasih atas jawabannya. Saya mengedit pertanyaan dengan beberapa detail lebih lanjut. Saya pasti akan memeriksanya ProxyCommand, terima kasih atas tipnya - Budius
Saya kira masalah terbesar yang saya miliki, adalah bahwa sebagian besar contoh, telah menetapkan nama host / IP. Dan pada kasus saya, saya tidak tahu REMOTE1 hostname / IP, saya hanya perlu menggunakan kembali koneksi permanen yang ada di port 16864 - Budius
dan apakah PC Anda di LAN1? Dan apakah Anda memiliki port forwarding yang diatur di router NAT LAN1? - barlop
Hai @barlop itu pertanyaan lama, saya mendapat pertanyaan baru tentang cara melakukan hal yang sama di Chromebook. Iya nih, PC dan LAN keduanya berada di jaringan lokal yang sama. Saya memiliki akses fisik dan root pada LAN. - Budius


Jawaban:


Pertama mengatur agar Anda dapat ssh dari PC Anda "langsung" ke remote1:

Di dalam .ssh / config Anda:

Host remote1
  Proxycommand ssh -q -l <myuser.on.lan1> lan1 nc -w 600 localhost 16864

Pastikan netcat (perintah nc) diinstal pada lan1.

Anda sekarang harus dapat ssh dari pc Anda dengan:

ssh <myuser.on.remote1>@remote1

setelah ini berhasil, gunakan:

ssh -L8888:localhost:9091 <myuser.on.remote1>@remote1

dan Anda memiliki akses ke transmisi pada remote1: 9091 via localhost: 8888


3
2018-06-24 10:14



Terima kasih atas jawabannya. Kedengarannya seperti itulah yang saya butuhkan. Saya hanya bisa mengujinya nanti malam, saya akan melaporkan kembali. - Budius
PERFECT!! =] pada akhirnya saya menggunakan transmisi pada port yang sama terbuka dan saya dapat menggunakan teknik yang sama untuk memperluas ke layanan lain yang ingin saya jalankan dari jarak jauh. Itu adalah perintah terakhir saya: ssh -L9091:localhost:9091 budius@remote -N (-N pada akhirnya untuk membiarkan port terbuka dan saya dapat mengakses melalui browser) - Budius