Ketika Anda Ingin Menggunakan Tunneling SSH Terbalik
Terkadang, komputer jarak jauh sulit dijangkau. Situs tempat mereka berada mungkin memiliki aturan firewall yang ketat, atau mungkin admin lokal telah menyiapkan aturan Terjemahan Alamat Jaringan yang rumit. Bagaimana Anda menjangkau komputer seperti itu jika Anda perlu menyambungkannya? Mari kita buat beberapa label. Komputer Anda adalah komputer lokal karena berada di dekat Anda. Komputer yang akan Anda sambungkan adalah komputer jarak jauh karena berada di lokasi yang berbeda dari Anda. Untuk membedakan antara komputer lokal dan komputer jarak jauh yang digunakan dalam artikel ini, komputer jarak jauh tersebut disebut "howtogeek" dan menjalankan Ubuntu Linux (dengan jendela terminal ungu). Komputer lokal disebut "Sulaco" dan menjalankan Manjaro Linux (dengan jendela terminal kuning). Biasanya Anda akan menjalankan koneksi SSH dari komputer lokal dan menyambung ke komputer jarak jauh. Itu bukanlah pilihan dalam skenario jaringan yang kami jelaskan. Tidak masalah apa masalah jaringan spesifiknya — ini berguna kapan pun Anda tidak dapat melakukan SSH langsung ke komputer jarak jauh. Tetapi jika konfigurasi jaringan di pihak Anda mudah, komputer jarak jauh dapat terhubung ke Anda. Namun, itu saja tidak cukup untuk kebutuhan Anda, karena tidak memberi Anda sesi baris perintah yang berfungsi di komputer jarak jauh. Tapi ini adalah sebuah permulaan. Anda memiliki koneksi yang terjalin antara kedua komputer. Jawabannya terletak pada reverse SSH tunneling.Apa itu Reverse SSH Tunneling?
Reverse SSH tunneling memungkinkan Anda menggunakan koneksi yang ada untuk mengatur koneksi baru dari komputer lokal Anda kembali ke komputer jarak jauh. Karena koneksi asli datang dari komputer jarak jauh ke Anda, menggunakannya untuk pergi ke arah lain berarti menggunakannya " kebalikan." Dan karena SSH aman, Anda menempatkan koneksi aman di dalam koneksi aman yang sudah ada. Ini berarti koneksi Anda ke komputer jarak jauh bertindak sebagai terowongan pribadi di dalam koneksi asli. Dan kita sampai pada nama "reverse SSH tunneling."Bagaimana Cara Kerja SSH Reverse Tunneling?
Reverse SSH tunneling bergantung pada komputer jarak jauh menggunakan koneksi yang dibuat untuk mendengarkan permintaan koneksi baru dari komputer lokal. Komputer jarak jauh mendengarkan port jaringan di komputer lokal. Jika ia mendeteksi permintaan SSH ke port tersebut, ia akan meneruskan permintaan koneksi itu kembali ke dirinya sendiri, ke koneksi yang sudah ada. Ini menyediakan koneksi baru dari komputer lokal ke komputer jarak jauh. Lebih mudah untuk mengatur daripada menjelaskannya.Menggunakan SSH Reverse Tunneling
SSH sudah diinstal di komputer Linux Anda, tetapi Anda mungkin perlu memulai daemon SSH (sshd ) jika komputer lokal belum pernah menerima koneksi SSH sebelumnya.sudo systemctl start sshdUntuk memulai daemon SSH setiap kali Anda me-reboot komputer, gunakan perintah ini:
sudo systemctl aktifkan sshdPada komputer jarak jauh, kami menggunakan perintah berikut. The -R ( reverse) opsi memberitahu ssh bahwa sesi SSH baru harus dibuat di komputer jarak jauh. "43022:localhost:22" memberitahu ssh bahwa permintaan koneksi ke port 43022 di komputer lokal harus diteruskan ke port 22 di komputer jarak jauh. Port 43022 dipilih karena terdaftar sebagai tidak terisi. Itu bukan nomor khusus. dave@sulaco.local adalah akun pengguna yang akan dihubungkan ke komputer jarak jauh di komputer lokal.
ssh -R 43022:localhost:22 dave@domain.localAnda mungkin mendapat peringatan karena belum pernah terhubung ke komputer lokal sebelumnya. Atau Anda mungkin melihat peringatan saat detail koneksi ditambahkan ke daftar host SSH yang dikenali. Apa yang Anda lihat — jika ada — bergantung pada apakah koneksi pernah dibuat dari komputer jarak jauh ke komputer lokal. Anda akan dimintai kata sandi akun yang Anda gunakan untuk menyambung ke komputer lokal. Perhatikan bahwa ketika koneksi telah telah membuat perubahan command prompt dari dave@localhost menjadi dave@sulaco. Kami sekarang terhubung ke komputer lokal dari komputer jarak jauh. Itu berarti kita bisa mengeluarkan perintah padanya. Mari kita gunakan perintah who untuk melihat login di komputer lokal.
whoKita dapat melihat bahwa orang dengan akun pengguna bernama dave telah login ke komputer lokal, dan komputer jarak jauh telah terhubung (menggunakan kredensial pengguna yang sama) dari alamat IP 192.168.4.25.
Menghubungkan ke Komputer Jarak Jauh
Karena koneksi dari komputer jarak jauh berhasil, dan mendengarkan koneksi, kita dapat mencoba menyambung ke komputer jarak jauh dari komputer lokal. Komputer jarak jauh mendengarkan pada port 43022 di komputer lokal. Jadi — agak berlawanan dengan intuisi — untuk membuat koneksi ke komputer jarak jauh, kami meminta ssh untuk membuat koneksi ke komputer lokal, pada port 43022. Permintaan koneksi itu akan diteruskan ke komputer jarak jauh.ssh localhost -p 43022Kami diminta untuk kata sandi akun pengguna, kemudian terhubung ke komputer jarak jauh dari komputer lokal. Komputer Manjaro kami dengan gembira berkata, "Selamat datang di Ubuntu 18.04.2 LTS". Perhatikan bahwa command prompt telah berubah dari dave@sulaco menjadi dave@howtogeek. Kami telah mencapai tujuan kami membuat koneksi SSH ke komputer jarak jauh yang sulit dijangkau.
Menggunakan SSH Dengan Kunci
Untuk membuatnya lebih nyaman untuk terhubung dari komputer jarak jauh ke komputer lokal, kita dapat mengatur kunci SSH. Pada komputer jarak jauh, ketik perintah ini:ssh-keygenAnda akan dimintai kata sandi. Anda dapat menekan Enter untuk mengabaikan pertanyaan frasa sandi, namun hal ini tidak disarankan. Ini berarti bahwa siapa pun di komputer jarak jauh dapat membuat koneksi SSH ke komputer lokal Anda tanpa dimintai kata sandi. Tiga atau empat kata yang dipisahkan oleh simbol akan menghasilkan frasa sandi yang kuat. Kunci SSH Anda akan dibuat. Kami perlu mentransfer kunci publik ke komputer lokal. Gunakan perintah ini:
ssh-copy-id dave@domain.localAnda akan dimintai kata sandi untuk akun pengguna yang Anda masuki, dalam hal ini, dave@sulaco.local. Saat pertama kali Anda membuat permintaan koneksi dari komputer jarak jauh ke komputer lokal, Anda harus memberikan frasa sandi. Anda tidak perlu memasukkannya lagi untuk permintaan koneksi di masa mendatang, selama jendela terminal tetap terbuka. Beberapa terowongan bisa jadi gelap dan berkelok-kelok, tetapi penerowongan SSH terbalik tidak terlalu sulit untuk dinavigasi jika Anda bisa jaga hubungan antara komputer jarak jauh dan komputer lokal langsung di kepala Anda. Lalu balikkan. Untuk mempermudah, Anda selalu dapat menyiapkan file konfigurasi SSH yang memungkinkan Anda menyederhanakan hal-hal seperti tunneling atau penerusan agen ssh.Artikel Diperbarui pada: September 24, 2023
Kontributor: Syauqi Wiryahasana
Model: Haifa Manik Intani