Satu mesin sudah memiliki akses VPN yang disetujui, mesin kedua membutuhkan tepat satu layanan HTTPS privat, dan penerusan SSH lokal dapat menjembatani celah itu tanpa memberikan tunnel kepada mesin kedua. Penerusan membawa satu tujuan TCP, bukan seluruh jaringan, dan justru batasan itulah intinya. Kerjakan lima langkah di bawah ini secara berurutan, karena masing-masing gagal karena alasan berbeda dan langkah berikutnya tidak dapat menyelamatkan celah sebelumnya. Jika ada prasyarat yang hilang, rancangan ini tidak menyelesaikannya dan tidak ada penyetelan perintah yang akan menolong.

Langkah satu: pastikan tiga prasyarat

Tiga hal harus sudah benar sebelum perintah apa pun berarti. Anda memerlukan izin menggunakan mesin pertama sebagai host penerusan, akses SSH yang berfungsi ke sana, dan kebijakan server yang mengizinkan tujuan yang dimaksud. Akun SSH yang dibuat untuk transfer berkas mungkin memiliki penerusan yang dinonaktifkan, dan server yang mengizinkan penerusan tetap dapat membatasi tujuan mana yang dapat dijangkau melaluinya. Tanyakan sebelum menguji, karena memakai stasiun kerja rekan sebagai titik lompat tanpa kesepakatan adalah masalah kebijakan, bahkan ketika perintah berjalan bersih.

Dua perintah menyelesaikan separuh teknis dari daftar itu. Yang pertama membuktikan akun dan kunci bekerja tanpa permintaan interaktif, dan yang kedua mencetak kebijakan server yang berlaku, bukan contoh yang dikomentari di berkas konfigurasi.

ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'

Langkah dua: ikat port loopback dan jaga sesi tetap hidup

Di mesin yang menjalankan aplikasi klien, buka penerusan lokal ke layanan privat. Ikat secara eksplisit ke loopback agar tidak dipublikasikan ke jaringan lokal, dan pilih port tinggi yang belum dipegang layanan lokal mana pun. Jaga sesi tetap berjalan selama Anda bekerja, karena menutupnya menutup pendengar. ExitOnForwardFailure mengubah pengikatan yang ditolak atau port yang terpakai menjadi keluar seketika, bukan sesi yang tetap hidup tanpa penerusan, dan itulah mode kegagalan yang paling banyak membuang waktu.

Koneksi privat dibuat dari host lompat, jadi DNS, rute, kebijakan VPN, dan akses layanan host itu semuanya harus bekerja. Sesi SSH tidak menciptakan keterjangkauan yang tidak dimiliki host lompat, dan tidak dapat memperbaiki rute yang tidak pernah didorong VPN. Pastikan pendengar di tempatnya yang sebenarnya daripada mempercayai kesunyian perintah.

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'

Langkah tiga: pertahankan nama HTTPS saat soket bersifat lokal

Menjelajah ke https://127.0.0.1:9443/ mengubah nama server TLS dan otoritas aplikasi. Sertifikat yang diterbitkan untuk portal.lab.example tidak akan tervalidasi terhadap alamat loopback, dan galat yang muncul tampak seperti sertifikat rusak, bukan seperti jalan pintas penerusan. Untuk uji baris perintah, pertahankan URL sebenarnya dan ubah hanya tujuan soket. Itulah yang dilakukan --connect-to, dan manual curl mendokumentasikan bentuk empat bidang yang dipakai di bawah.

curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/

Nama tetap ada di URL, di jabat tangan TLS, dan di header Host, sementara koneksi TCP menuju pendengar lokal. Opsi tanpa proksi menjaga uji tetap pada penerusan ini, bukan membiarkan proksi HTTP yang dikonfigurasi mencegatnya, dan membiarkan verifikasi sertifikat tetap aktif itulah yang membuat hasilnya bermakna.

Langkah empat: ketahui apa yang tidak bisa dicakup satu penerusan

Satu penerusan TCP mencakup satu port tujuan. Halaman yang mengalihkan ke nama host kedua, memuat aset dari host di dalam jaringan privat, atau mengirim ke port lain memerlukan penerusannya sendiri, dan masing-masing memerlukan pemeriksaan kebijakan yang sama seperti yang pertama. Alur kerja peramban menambahkan persyaratannya sendiri, karena peramban harus diberi tahu untuk mengirim nama sebenarnya ke port lokal melalui konfigurasi proksi atau pemetaan lokal. Jadi uji baris perintah yang berhasil tidak membuktikan peramban akan berhasil, meskipun membuktikan jalurnya.

UDP, penemuan SMB, dan masuk domain sama sekali tidak melewati penerusan TCP. Jika kebutuhan sebenarnya adalah akses jaringan umum, rancangan ini adalah alat yang salah dan gateway akses jarak jauh yang didukung adalah yang benar.

Langkah lima: bersihkan dan catat

Hentikan sesi ketika uji selesai dan pastikan pendengar sudah hilang. Jika port yang dipilih sudah terpakai, pilih port loopback lain yang belum dipakai dan perbarui URL, perintah uji, serta catatan bersama-sama, bukan menghentikan layanan lokal yang tidak terkait untuk membebaskan nomornya. Membiarkan penerusan terbuka di laptop mengubah diagnosis menjadi layanan yang tidak terkelola.

Catat host lompat, tujuan yang diteruskan, port lokal, dan siapa yang menyetujui pengaturan itu. Penerusan yang hanya ada di riwayat shell seseorang berjarak satu boot ulang dari penyelidikan berulang, dan orang berikutnya tidak akan tahu prasyarat mana dari tiga itu yang sudah diperiksa.

Artikel terkait