GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengatur Terowongan SSH Terbalik di Linux

Reverse SSH adalah teknik yang dapat digunakan untuk mengakses sistem (yang berada di belakang firewall) dari dunia luar.

Seperti yang sudah Anda ketahui SSH adalah protokol jaringan yang mendukung komunikasi kriptografi antar node jaringan. Dengan menggunakan protokol ini, Anda dapat melakukan login jarak jauh yang aman, penyalinan aman dari/ke mesin jarak jauh, dll.

Anda biasanya melakukan hal berikut untuk menyambung ke server jarak jauh dengan aman menggunakan perintah ssh.

$ ssh [your-account-login]@[server-ip]

Apa itu Reverse SSH?

SSH adalah alat yang sangat baik untuk mengakses mesin atau server jarak jauh dengan aman. Namun, masalah muncul ketika Anda mencoba untuk terhubung ke server jauh yang berada di belakang firewall dan firewall ini menolak koneksi masuk atau permintaan transfer data yang tidak memiliki permintaan keluar sebelumnya. Ini berarti bahwa hanya koneksi tersebut yang akan diizinkan yang dimulai oleh mesin server jauh. Ini adalah masalah nyata bagi mereka yang ingin mengakses mesin server ini dari jarak jauh.

Reverse SSH menyediakan teknik di mana Anda dapat mensimulasikan SSH normal ke mesin server jarak jauh ini.

Masalah utamanya adalah firewall menolak koneksi ssh yang coba dibuat oleh mesin Anda dengan mesin server jarak jauh. Tetapi Anda tahu bahwa firewall yang sama tidak akan memiliki masalah dengan koneksi yang berasal dari mesin server. Jadi, mengapa tidak meminta seseorang yang duduk di belakang firewall untuk melakukan sesuatu yang dengannya Anda dapat mencapai tujuan Anda mengakses server dari jarak jauh. Untuk melakukan ini kita harus menggunakan opsi ssh -R.

Ini adalah deskripsi opsi ssh -R dari halaman manual:

-R [bind_address:]port:host:hostport

Menentukan bahwa port yang diberikan pada host jarak jauh (server) akan diteruskan ke host yang diberikan dan port di sisi lokal. Ini bekerja dengan mengalokasikan soket untuk mendengarkan port di sisi jarak jauh, dan setiap kali koneksi dibuat ke port ini, koneksi diteruskan melalui saluran aman, dan koneksi dibuat ke host port hostport dari mesin lokal.

Jadi Anda dapat menggunakan perintah ssh, dengan opsi -R, (dari server dalam kasus kami) untuk terhubung ke mesin Anda, mengalokasikan port di sana dan memastikan bahwa setiap permintaan koneksi pada port tersebut diteruskan ke port ssh dari server jauh.

Alih-alih mesin Anda melakukan ssh, mesin server melakukan ssh dan melalui penerusan port memastikan bahwa Anda dapat ssh kembali ke mesin server.

Bagaimana Cara Membuat Terowongan SSH Terbalik?

Berikut adalah perintah yang harus dijalankan teman Anda di sisi server jauh di server:

ssh -fN -R 7000:localhost:22 username@yourMachine-ipaddress

Jadi permintaan koneksi ssh ini yang berasal dari server jauh ke mesin Anda akan memastikan bahwa setiap permintaan koneksi ssh untuk port 7000 pada mesin Anda diteruskan ke port 22 server jarak jauh.

Sekarang lakukan permintaan koneksi ssh dari mesin Anda ke mesin Anda sendiri di port 7000:

ssh username@localhost -p 7000

Di sini, meskipun sepertinya Anda melakukan ssh di localhost tetapi permintaan Anda akan diteruskan ke host jarak jauh. Jadi, Anda harus menggunakan 'nama pengguna' akun Anda di server jauh dan ketika diminta kata sandi, masukkan kata sandi yang sesuai.

Ini harus menghapus sebagian besar aspek yang terkait dengan teknik ssh terbalik. Tapi, ada satu tangkapan. Tangkapannya adalah Anda harus meminta teman Anda — yang duduk di belakang firewall — untuk membuat koneksi ssh terlebih dahulu. Ini tidak mungkin dilakukan setiap saat.

Untuk mengatasi masalah ini, yang dapat Anda lakukan adalah mengatur mesin yang berada di luar firewall (seperti milik Anda) dengan cara yang selalu menyala. Mari kita panggil mesin ini sebagai machine_z.

Manfaat machine_z adalah Anda dapat melakukan pengaturan ssh terbalik ini dan membiarkannya seperti ini. Kapan saja, ketika Anda perlu masuk ke mesin jarak jauh, Anda dapat ssh ke machine_z pada port tertentu (seperti yang ditunjukkan sebelumnya) dan permintaan koneksi Anda akan diteruskan ke mesin server jarak jauh dan Voila, Anda akan menjalankan perintah pada jarak jauh server.

Pada catatan terkait, Anda juga dapat mengatur SSH tanpa kata sandi untuk terhubung ke server lain tanpa memasukkan kata sandi.

Beberapa pengaturan yang perlu Anda konfigurasikan pada machine_z akan mencakup :

  • Pastikan bahwa parameter TCPKeepAlive, ClientAliveInterval, ClientAliveCountMax, dan GatewayPorts disetel ke nilai yang sesuai. Parameter ini ditemukan di file /etc/sshd_config atau /etc/ssh/sshd_config
  • Jika Anda membuat beberapa perubahan pada parameter di atas, Anda harus memulai ulang daemon sshd untuk mencerminkan perubahan tersebut.
  • Juga, pastikan Anda menjalankan perintah ssh pertama (yang dijalankan dari server jauh ke machine_z) menggunakan perintah nohup sehingga sesi ssh ini menjadi kebal terhadap hangup yang dapat terjadi saat pengguna logout.

Linux
  1. Cara Mengatur SSH Tanpa Kata Sandi di Linux

  2. Cara mengatur login SSH tanpa kata sandi di Linux

  3. Cara SCP dari server linux ke klien Windows

  1. Setup Apache Traffic Server sebagai Reverse Proxy di Linux

  2. Cara SSH di Linux dari Android

  3. Bagaimana cara mengatur terowongan ssh untuk meneruskan ssh?

  1. Cara membuat server file pribadi dengan SSH di Linux

  2. Cara mengatur layanan DNS bernama di Redhat 7 Linux Server

  3. Cara setup vsftpd FTP file Server di Redhat 7 Linux