Rahsia Tidak Sah Biasanya Masalah Bekas, Bukan Peraturan Kata Laluan
Kelayakan yang ditolak mungkin tidak pernah sampai ke gerbang. Bandingkan bekas input, peringkat pengesahan dan akaun itu sendiri dahulu.
Melihat "invalid secrets" biasanya membawa kepada satu kesimpulan: VPN tidak suka tanda baca. Kesimpulan itu biasanya salah, kerana mesej itu sering datang daripada pengendalian setempat sebelum mana-mana gerbang melihat akaun. Dua reka bentuk menghantar kata laluan yang sama, satu medan grafik dan satu fail kelayakan, dan kedua-duanya gagal di tempat yang berbeza. Bandingkan bekasnya sebelum anda permudahkan kata laluan yang sebenarnya baik.
Ralat itu datang sebelum gerbang
Pengesahan setempat, stor rahsia yang terkunci, ejen yang tiada dan fail kelayakan yang rosak semuanya menghasilkan kegagalan yang dialami pengguna sebagai satu penolakan. Tiada satu pun melibatkan pelayan pengesahan. Penolakan gerbang itu sendiri ialah peristiwa berasingan, dan ia biasanya tiba dengan mesej dan masa yang berbeza. Ia berlaku selepas terowong wujud dan kelayakan telah dihantar.
Jadi soalan pertama bukanlah aksara mana yang sah, tetapi di mana percubaan itu berhenti. Klien yang tidak pernah membuka sambungan belum ditolak oleh sesiapa. Catat peringkat yang anda perhatikan, kerana setiap langkah seterusnya bergantung pada klasifikasi itu.
Perbezaan ini juga mengubah siapa yang membaikinya. Masalah bekas menjadi milik peranti dan pemiliknya, manakala penolakan akaun menjadi milik sesiapa yang mengendalikan bahagian belakang pengesahan.
Bandingkan bekasnya, bukan aksaranya
Medan kata laluan GUI, entri rantai kunci, fail kelayakan dua baris dan rahsia automasi masing-masing membawa nilai yang sama dalam sampul yang berbeza. Sampul itu mempunyai peraturannya sendiri, dan peraturan itulah yang biasanya rosak. Nilainya jarang menjadi masalah; cara nilai itu dihantar yang menjadi masalah. Asingkan kedua-dua idea ini dan diagnosis menjadi lebih pendek.
| Where the value stops | What you see | What you check | Who owns the fix |
|---|---|---|---|
| GUI field or managed profile | A validation message before any connection opens | The selected authentication mode and whether the field holds the secret or the username | The device owner or the profile author |
| Keychain or secret agent | A prompt that keeps reappearing, or an agent error | Whether the agent is unlocked and holds an entry for this profile | The user who owns the keychain |
| Two-line credential file | A prompt for a password that was already supplied | Line count, line order and whether a trailing newline is present | Whoever generated the file |
| Shell argument or environment | Works interactively but fails in automation | Whether the shell expanded, trimmed or logged the value | Whoever wrote the automation |
Pilihan klien OpenVPN 2.6 Komuniti menerangkan fail dua baris itu untuk auth-user-pass, termasuk tingkah laku apabila baris kata laluan tiada: klien akan meminta. Butiran tunggal itu menjelaskan satu kelas laporan "ia meminta kata laluan yang sudah saya berikan". Ia juga memberitahu anda bahawa baris kedua yang kosong ialah keadaan bermakna, bukan pilihan pemformatan yang tidak berbahaya.
Petikan ialah lapisan berasingan lagi: tanda petikan di dalam fail kelayakan biasa disimpan sebagai data, manakala shell membuangnya sebelum program melihat apa-apa. Aksara yang sama tidak berbahaya di satu tempat dan bersifat struktur di tempat lain. Jadual tidak boleh memberitahu anda bekas mana yang klien anda gunakan, jadi baca konfigurasi klien itu sendiri sebelum anda memilih baris.
Pemenggalan baris juga bersifat struktur. Fail dengan medan terbatas baris tidak boleh membawa nilai yang mengandungi baris baharu, dan itu ialah had format, bukan penilaian tentang kekuatan kata laluan. Gunakan mekanisme penyampaian yang disokong oleh penggunaan itu, bukannya memangkas rahsia agar sesuai dengan fail improvisasi.
Bina fail kelayakan tanpa kerosakan shell
Laluan setempat paling selamat menjauhkan rahsia daripada sejarah shell dan daripada senarai argumen proses. Baca kedua-dua medan secara interaktif, kemudian tulis dua baris yang dijangka oleh klien. Selebihnya boleh kekal dalam fail konfigurasi yang mudah disemak.
read -r VPN_USER
read -rs VPN_PASS
printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS" > /etc/openvpn/client/creds
chmod 600 /etc/openvpn/client/creds
openvpn --config /etc/openvpn/client/office.conf --auth-user-pass /etc/openvpn/client/creds
Dua arahan pertama membaca nama pengguna dan kemudian kata laluan tanpa memaparkannya, yang ketiga menulis kedua-dua baris, yang keempat mengehadkan fail, dan yang terakhir memulakan klien dengan fail itu. Perhatikan bahawa read -r mengekalkan garis miring terbalik, iaitu jenis butiran yang menukar kata laluan yang berfungsi menjadi gagal apabila diabaikan.
Elakkan membina fail dengan pemboleh ubah tanpa petikan atau here-document yang penuh dengan pengembangan shell. Kedua-duanya boleh mengubah aksara sebelum sampai ke fail, dan kegagalan yang terhasil kelihatan seperti penolakan VPN kerana kata laluan pada cakera memang berbeza daripada kata laluan yang anda tahu. Bandingkan panjang bait fail dengan nilai yang dijangka jika anda mengesyaki perkara ini, tanpa mencetak rahsia itu sendiri. Perbezaan satu atau dua bait ialah tanda kemalangan petikan.
Baca peringkat daripada ralat pertama
Simpan mesej khusus yang pertama daripada satu percubaan, kemudian klasifikasikannya. Ralat pengesahan setempat, kunci peribadi yang tiada, ejen rahsia yang tidak tersedia dan kegagalan pengesahan gerbang ialah empat keputusan berbeza dengan empat pemilik berbeza. Hanya satu daripadanya berkaitan akaun.
Jika gerbang benar-benar menolak kelayakan yang dihantar dengan betul, semak akaun, bahagian belakang pengesahan dan sebarang cabaran yang diperlukan dengan pentadbir. Kegagalan pengesahan generik tidak menamakan aksara terlarang.
Pulihkan nilai yang diluluskan melalui mekanisme yang betul dan bukannya mengurangkannya kepada huruf dan digit. Dasar kata laluan milik pengendali, dan jalan pintas yang secara senyap mengalahkannya bukan pembaikan. Ia juga menyembunyikan kecacatan sebenar daripada orang seterusnya, yang akan menemui ralat yang sama dengan kata laluan lebih lemah dan tanpa idea yang lebih baik.