Jika port depan masih menerima koneksi setelah SSH keluar, periksa ketiga unit. Soket aktivasi, pembantu systemd-socket-proxyd, dan pendengar SOCKS yang dibuat SSH memiliki masa hidup berbeda:

SoketPembantuSSHTafsir
MendengarkanTidak aktifTidak aktifMungkin menunggu permintaan secara normal
MendengarkanAktifAktifProses ada; kesehatan tujuan akhir belum terbukti
MendengarkanAktifTidak aktifFront end dapat menerima pekerjaan tanpa backend-nya

Menjalankan pembantu dan SSH bersama tidak menentukan transisi berhenti berikutnya. Untuk pembantu yang tidak boleh tetap aktif tanpa terowongannya, systemd mendokumentasikan hubungan yang lebih kuat:

[Unit]
BindsTo=ssh-socks.service
After=ssh-socks.service

Terapkan pada unit yang sesuai dalam desain sebenarnya. Requires= dan pengurutan hanya menangani sebagian hubungan. Front end yang sudah aktif mungkin tidak akan pernah memicu aktivasi lagi setelah backend-nya hilang. Periksa juga status unit yang gagal dan batas laju mulai; dependensi tidak mengesampingkan batas tersebut.

Lalu tetapkan kesiapan mulai. After= mengurutkan tugas, bukan kesiapan pendengar SSH Type=simple. Jeda tetap dapat gagal saat autentikasi lambat. Gunakan kontrak mulai yang menetapkan pendengar yang dibutuhkan; ExitOnForwardFailure=yes menangkap kegagalan penyiapan penerusan, bukan keterjangkauan tujuan nanti.

Terakhir, tetapkan keluar saat menganggur dan aktivasi ulang. Opsi keluar saat menganggur daemon penerusan menyangkut tidak adanya koneksi aktif, bukan kurangnya bita pada koneksi terbuka. Sesi tenang dapat membuatnya tetap aktif. Permintaan berikutnya seharusnya mengaktifkan layanan yang diperlukan, dan perulangan mulai ulang seharusnya tetap terbatas dan terlihat. Membuat ulang pendengar menerima koneksi baru; itu tidak memulihkan sesi TCP lama yang diproksikan.

Artikel terkait