Relai dua koneksi SSH bersama-sama

-1

Saya punya tiga mesin:

  1. Saya memiliki akses fisik ke localhost
  2. Saya ingin ssh ke host1. Namun, itu berada di belakang NAT tingkat-pembawa, jadi saya tidak dapat ssh langsung darinya localhost
  3. relayhost sudah diatur untuk membantu saya terhubung dari localhost untuk host1

Saya ingin ssh dari masing-masing localhost dan host1 untuk relayhost, lalu miliki relayhost menyampaikan koneksi ssh saya dari localhost untuk host1.

Jawaban ini menyarankan agar saya dapat membuat terowongan relayhost menggunakan ssh -L jika saya tahu alamat URI atau IP host1. Namun, saya tidak tahu itu karena carrier grade NAT. Jadi saya bisa membayangkan proses untuk menyampaikannya seperti ini:

  1. Di host1, ssh user@relayhost
  2. relayhost sedang mengamati koneksi ini dan ketika melihatnya tertulis "Aku akan membuat terowongan dari port 9999 ke koneksi ini"
  3. Di localhost, ssh 9999:relayhost

Apakah ini cara yang tepat untuk melakukan ini? Bagaimana saya melakukan langkah 2?

ericksonla
sumber
sudah lama tetapi tidak menarik, bagaimana relayhost bisa melewati tingkat pembawa NAT machineB? qna yang Anda tautkan tidak menyebutkan apa-apa tentang nat tingkat operator.
barlop
@barlop saya pikir masalahnya adalah keduanya localhost dan host1 ada di belakang NAT, dia tidak bisa mengelak ...
Marek Rost
Jadi katakan Anda memiliki host1, hostX, machineB. Anda dapat memiliki host yang ingin Anda hubungkan, terhubung ke beberapa host lain yang tidak berada di belakang NAT tingkat operator. Sebut saja hostX. Kemudian Anda dapat menghubungkan host1 ke hostX, dan memilikinya secara otomatis melompat ke MachineB Anda. Jadi dari MachineB saya kira itu akan menjadi sesuatu seperti machineB$SSH -R 1234:127.0.0.1:1000 hostxIP Kemudian host1$SSH hostx:1234 Dan itu harus terhubung secara tidak langsung, ke machineB pada port 1000.
barlop
Anda bahkan belum menunjukkan diri mencoba sesuatu dalam pertanyaan Anda. Saya menyebutkan SSH -R dan Anda tidak pernah melakukan apa pun dengannya. Jawaban yang diposting juga menyebutkan SSH -R dan masih belum jelas apakah Anda telah mencoba sesuatu.
barlop

Jawaban:

2

Anda tidak memerlukan pemicu khusus relayhost. Yang perlu Anda lakukan adalah menggunakan penerusan port jarak jauh ssh -R bukannya penerusan port lokal dengan ssh -L.

Sekarang jika saya memahaminya dengan benar - masalah Anda adalah keduanya localhost maupun host1 memiliki IP yang dapat diakses publik - keduanya berada di belakang NAT. Kalau tidak, akan lebih mudah membuat terowongan dari host1 untuk localhost dengan ssh -R dan kemudian jalankan koneksi SSH kedua di dalam terowongan ini.

Jika kita harus menggunakan relay, itu bisa dilakukan dalam langkah-langkah berikut. Untuk kejelasan, mari ganti nama Anda localhost mesin untuk myhost sekarang.

  1. Jalankan ini host1:

    ssh -R 12345:localhost:22 user@relayhost
    

    Ini akan membuka porta 12345 di relayhost dan ketika ada yang terhubung, data akan diteruskan ke port SSH 22 di host1.

  2. Sekarang Anda dapat terhubung ke port 12345 di relayhost dari myhost.

    ssh user@relayhost -p 12345
    

    Seandainya Anda memiliki firewall restriktif aktif relayhost yang melarang akses eksternal ke pelabuhan 12345, Anda dapat menggunakan penerusan port lokal untuk membuka port secara lokal myhost:

    ssh -N -L 56789:localhost:12345 user@relayhost
    

    Dan kemudian terhubung ke host1 dari myhost:

    ssh user@localhost -p 56789
    

Namun jangan berharap untuk membangun solusi jaringan permanen pada penerusan port jarak jauh (lihat: https://serverfault.com/q/595323 untuk kemungkinan masalah di masa depan). Anda harus mempertimbangkan menggunakan VPN dengan server aktif relayhost untuk pengaturan jangka panjang sebagai gantinya.

Marek Rost
sumber
Penjelasan hebat tentang cara mengatur ssh relay. Bisakah Anda menunjukkan referensi bagaimana cara saya mengatur VPN itu?
ericksonla
1
@ericksonla tidak, dia tidak dan seharusnya tidak menjelaskan kepada Anda cara mengatur VPN karena itu bukan yang Anda tanyakan dalam pertanyaan Anda. Jika Anda kesulitan untuk membuat VPN, maka ajukan pertanyaan tentang itu, yang menyatakan masalah apa yang Anda miliki
barlop
1
@ericksonla mencari OpenVPN, banyak tutorial di sekitarnya.
Marek Rost