Ping berfungsi tetapi SSH gagal melalui VPN: peringkat mana yang rosak?
Satu percubaan terperinci memisahkan ketersampaian TCP, pengangkutan SSH, identiti hos, log masuk pengguna dan kebenaran sesi, supaya anda berhenti meneka tentang terowong.
Balasan ping dan log masuk SSH yang ditolak boleh kedua-duanya benar pada masa yang sama, dan pasangan itu tidak menuduh terowong. Balasan gema dan sambungan TCP ke port 22 ialah ujian berbeza dengan pemilih berbeza, dasar berbeza dan selalunya destinasi berbeza. Rakam satu percubaan SSH yang disengajakan, kemudian namakan peringkat terakhir yang dicapainya. Satu artifak itu menggantikan selusin perubahan konfigurasi spekulatif.
Rakam satu percubaan, bukan sesi mencucuk
Jalankan klien sekali dengan diagnostik terperinci, perkongsian sambungan dimatikan dan had masa sambungan terhad. Mematikan perkongsian penting kerana sambungan induk yang telah disahkan sebelum ini akan menjawab bagi pihak percubaan baharu dan menyembunyikan kegagalan yang anda kejar.
ssh -4 -vv -o ControlPath=none -o ConnectTimeout=10 [email protected]
Simpan destinasi, keluarga alamat, cap masa dan ralat terakhir yang bukan rahsia. Bendera IPv4 juga bermaksud percubaan ini tidak berkata apa-apa tentang laluan IPv6 ke nama yang sama, jadi jangan umumkan daripadanya. Catat dari mana percubaan dibuat. Semakan pada get laluan VPN bukan sudut pandangan yang sama dengan komputer riba di belakangnya, dan kebanyakan percanggahan dalam tiket ini datang daripada mencampurkan kedua-duanya.
Peringkat satu dan dua: TCP sebelum SSH
Sempadan pertama ialah ketersampaian soket: alamat, port dan laluan yang benar-benar diikuti paket. Jika sambungan TCP tidak pernah selesai, belum ada apa-apa di atasnya, dan kunci hos serta akaun tidak relevan.
nc -vz 10.90.4.20 22
ip route get 10.90.4.20
tcpdump -ni any 'host 10.90.4.20 and port 22'
Kaitkan rakaman dengan percubaan klien. SYN keluar dan tiada apa kembali menunjuk kepada penapisan, pemilih atau laluan yang hilang di sisi jauh; balasan dengan set semula menunjuk kepada sesuatu yang menolak secara aktif dan bukan menggugurkan. Sempadan kedua ialah pertukaran protokol SSH itu sendiri. Sambungan TCP yang selesai dan kemudian tersekat telah melepasi ketersampaian dan masuk ke rundingan, respons pelayan atau pengendalian paket. Itu siasatan lain, dan di situlah masalah berkaitan saiz mula munasabah.
Peringkat tiga: kunci siapa yang menjawab
Setelah pengangkutan aktif, klien mengesahkan kunci hos pelayan. Penolakan di sini ialah kenyataan tentang identiti, bukan tentang kriptografi: rakan setara membentangkan kunci yang dasar anda tidak terima. Anggapnya sebagai syarat berhenti dan sahkan di luar jalur, terhadap konsol atau pengendali yang membina semula hos. Memadam entri yang diingati untuk membersihkan amaran ialah satu-satunya jalan pintas yang patut ditolak, kerana ia memusnahkan bukti bahawa sesuatu menjawab secara tidak dijangka.
Jika hos benar-benar dibina semula, buang rekod lama hanya selepas cap jari baharu disahkan, dan catat tarikh serta sebabnya. Jurutera seterusnya akan menemui amaran yang sama dan memerlukan konteks itu.
Peringkat empat dan lima: akaun berbanding kebenaran
Pengesahan ialah sempadan keempat. Kelayakan yang ditolak bermaksud pelayan menilai percubaan dan menolaknya; periksa akaun, jenis kelayakan yang diterima pelayan dan dasar pelayan itu sendiri dan bukan kata laluan VPN. Sempadan kelima ialah kebenaran selepas log masuk berjaya. Pengguna yang disahkan masih boleh ditolak shell, arahan, subsistem atau pemajuan, dan penolakan itu kelihatan seperti kegagalan kepada orang yang hanya membaca baris terakhir klien.
| Last stage reached | What it proves | Where to look next |
|---|---|---|
| No TCP connection | No SSH transport exists | Address, port, route, selectors, filter, listener |
| TCP up, exchange incomplete | Reachability is not the blocker | Server response, negotiation, packet handling |
| Host identity rejected | The peer is not the expected host | Independently verified host key |
| User authentication rejected | The attempt reached authentication | Account, credential and server policy |
| Authenticated, session denied | Login succeeded, the operation did not | Shell, command or forwarding permission |
Berhenti selepas beberapa percubaan kata laluan yang gagal. Tekaan berulang menghasilkan penguncian yang kemudian kelihatan seperti kegagalan kedua yang tidak berkaitan dan mengambil lebih banyak masa daripada tiket asal.
Gulung balik dan rekod yang anda simpan
Tukar satu perkara pada satu masa, dan catat apa yang anda tukar sebelum menguji semula. Jika perubahan membuat percubaan lebih teruk, kembalikan segera dan bukannya menimbun pembetulan lain di atasnya. Ulang operasi asal dari klien dan konteks asal. Log masuk berjaya dari mesin lain, pada keluarga alamat lain, bukan penghasilan semula dan tidak membuktikan pembetulan.
Sanitasi apa yang anda kongsi. Output klien terperinci boleh membawa nama dalaman, label akaun, laluan kunci dan pengecam kunci awam, jadi terbitkan kesimpulan berperingkat dan bukan jejak mentah.