Anda menyelesaikan permintaan MFA, terowongan naik, dan menutup terminal ikut memutus koneksi. Ini masalah pengawasan, bukan autentikasi, dan OpenConnect sudah menyertakan sakelar yang menyelesaikannya. Solusinya adalah membiarkan klien bercabang ke latar belakang setelah startup selesai, saat bagian interaktif benar-benar berakhir. Berikut urutan pemeriksaan: kerjakan berurutan dan berhenti pada yang pertama yang tidak berlaku untuk gateway Anda.

Pastikan apa yang diminta gateway saat login

Sebelum mengetik perintah, catat jalur kredensial yang diberlakukan penerapan. Hanya sertifikat, kata sandi plus token, dan perjalanan peramban lewat penyedia SAML berperilaku berbeda, dan mode latar belakang tidak bisa melewati satu pun. Opsi ini mengubah apa yang terjadi setelah startup, bukan selama startup.

Jalan pintas yang menggoda adalah mengotomatiskan permintaan. Pembungkus yang mengetik jawaban tetap saat mengenali permintaan kata sandi langsung rusak begitu gateway meminta kode sekali pakai, dan meninggalkan kredensial di berkas yang bisa dibaca akun lain. Jika seseorang harus menyetujui sesi, pertahankan orang itu dalam proses.

Jalankan sesi pertama di latar depan dan baca keluarannya

Hubungkan sekali seperti biasa dan biarkan seluruh handshake tercetak. Catat protokol yang dipakai, jalur sertifikat atau token, alamat terowongan dari server, dan setiap peringatan sebelum koneksi diterima. Transkrip itu adalah garis dasar Anda dan satu-satunya cara murah untuk membedakan masalah klien dari perubahan gateway nanti. Simpan di luar buffer terminal.

Lalu ulangi pemanggilan yang sama dengan mode latar belakang dan berkas PID tambahan, misalnya openconnect --background --pid-file /run/openconnect.pid vpn.example.net, sambil mempertahankan protokol dan opsi autentikasi yang diminta gateway pada baris yang sama. Manual OpenConnect menjelaskan opsi itu sebagai lanjutan di latar belakang setelah startup selesai, dan itulah sebabnya fase interaktif harus selesai lebih dulu.

Buat proses yang berjalan mudah ditemukan dan dihentikan

Berkas PID hanya bukti selama cocok dengan proses hidup. Letakkan di direktori milik akun layanan, dan bandingkan nomor tercatat dengan tabel proses sebelum mengirim sinyal. Reboot dan crash meninggalkan berkas, dan berkas basi adalah alasan umum skrip penghentian melaporkan sukses padahal terowongan masih naik. Perlakukan pemeriksaan sebagai bagian prosedur penghentian, bukan langkah opsional.

Kirim sinyal ke PID yang terverifikasi, lalu pastikan antarmuka terowongan benar-benar hilang alih-alih memercayai status keluar. Jika klien butuh hak istimewa tinggi untuk mengonfigurasi antarmuka, sinyal harus datang dari akun yang diizinkan mengirimnya.

Jangan menumpuk mode latar belakang di bawah pengawas

systemd dan pengawas serupa mengharapkan memiliki proses yang mereka luncurkan, karena itu klien yang bercabang membingungkan mereka. Pengawas melihat peluncur keluar sementara koneksi nyata tetap hidup, jadi logika restart, pelaporan status, dan batas waktu berhenti menjelaskan sesuatu yang tidak lagi benar. Tulis unit dalam susunan latar depan yang didukung dan biarkan pengawas melakukan kerja daemon.

Sisihkan --background untuk sesi yang dimulai orang lalu ditinggalkan. Jika kebutuhannya terowongan yang ada sebelum siapa pun login, bagian yang hilang adalah identitas noninteraktif yang disetujui plus rencana pembaruannya, dan tidak ada flag baris perintah yang menyediakan keduanya. Menambahkan flag ke skrip boot menghasilkan terowongan yang gagal diam-diam pada kredensial kedaluwarsa pertama.

Perlakukan cookie sesi sebagai kredensial

OpenConnect mendokumentasikan fase autentikasi terpisah lewat --authenticate, dan materi yang dihasilkan bisa dikembalikan dengan --cookie-on-stdin. Pasangan itu ada untuk pekerjaan integrasi, dan yang dihasilkannya sama sensitifnya dengan kata sandi yang membuatnya.

Jauhkan nilai dari riwayat shell, log, dan tiket apa pun yang Anda buka. Skrip penyerahan juga harus mempertahankan informasi endpoint terverifikasi yang diterima klien bersama cookie; jika hilang, jalankan berikutnya bisa tersambung ke host yang tidak pernah Anda autentikasi, lebih buruk daripada koneksi yang sekadar gagal.

Lewati daftar sebelum menutup terminal

Empat hal harus benar: login interaktif selesai di latar depan, berkas PID menunjuk proses yang Anda verifikasi, pertanyaan pengawas sudah diputuskan ke satu arah, dan cookie punya rencana penyimpanan yang bukan berkas teks biasa. Bila keempatnya berlaku, meninggalkan terminal aman dan terowongan tetap berjalan.

Jika salah satu gagal, perbaiki item itu sebelum menyentuh yang lain, karena pemeriksaan lain tidak bisa menutupinya. Simpan juga transkrip latar depan dari jalankan pertama: saat terowongan jatuh tanpa peringatan nanti, garis dasar itulah yang memisahkan perubahan di sisi gateway dari sisi klien.

Artikel terkait