Ολοκληρώνετε το MFA, η σήραγγα ανεβαίνει και το κλείσιμο του τερματικού ρίχνει μαζί και τη σύνδεση. Είναι πρόβλημα εποπτείας, όχι ταυτοποίησης, και το OpenConnect έχει ήδη τον διακόπτη που το λύνει. Η λύση είναι να αφήσετε τον πελάτη να διακλαδωθεί στο παρασκήνιο αφού τελειώσει η εκκίνηση, όταν το διαδραστικό μέρος έχει πραγματικά τελειώσει. Ακολουθεί μια σειρά ελέγχων: περάστε τους με σειρά και σταματήστε στον πρώτο που δεν ισχύει για την πύλη σας.

Επιβεβαιώστε τι απαιτεί η πύλη κατά τη σύνδεση

Πριν πληκτρολογήσετε εντολή, σημειώστε τη διαδρομή διαπιστευτηρίων που επιβάλλει η εγκατάσταση. Μόνο πιστοποιητικό, κωδικός συν token και μια διαδρομή μέσω browser από πάροχο SAML συμπεριφέρονται διαφορετικά, και το παρασκήνιο δεν παρακάμπτει κανένα. Η επιλογή αλλάζει τι γίνεται μετά την εκκίνηση, ποτέ κατά τη διάρκειά της.

Ο πειρασμός είναι να αυτοματοποιήσετε το αίτημα. Ένα wrapper που πληκτρολογεί σταθερή απάντηση όταν αναγνωρίσει αίτημα κωδικού σπάει μόλις η πύλη ζητήσει κωδικό μιας χρήσης και αφήνει διαπιστευτήριο σε αρχείο αναγνώσιμο από άλλους λογαριασμούς. Αν άνθρωπος πρέπει να εγκρίνει τη συνεδρία, κρατήστε τον στη διαδικασία.

Τρέξτε την πρώτη συνεδρία στο προσκήνιο και διαβάστε την έξοδο

Συνδεθείτε μία φορά κανονικά και αφήστε όλη τη χειραψία να εκτυπωθεί. Σημειώστε το πρωτόκολλο, τη διαδρομή πιστοποιητικού ή token, τη διεύθυνση σήραγγας που δίνει ο διακομιστής και κάθε προειδοποίηση πριν γίνει δεκτή η σύνδεση. Αυτό το αρχείο είναι η βάση σας και ο μόνος φθηνός τρόπος να ξεχωρίσετε αργότερα πρόβλημα πελάτη από αλλαγή πύλης. Αποθηκεύστε το έξω από το buffer του τερματικού.

Επαναλάβετε την ίδια κλήση με παρασκήνιο και αρχείο PID, για παράδειγμα openconnect --background --pid-file /run/openconnect.pid vpn.example.net, κρατώντας στην ίδια γραμμή το πρωτόκολλο και τις επιλογές ταυτοποίησης που απαιτεί η πύλη σας. Το εγχειρίδιο OpenConnect περιγράφει την επιλογή ως συνέχεια στο παρασκήνιο μετά την εκκίνηση, γι' αυτό η διαδραστική φάση πρέπει να έχει τελειώσει πρώτη.

Κάντε τη διεργασία εντοπίσιμη και σταματήσιμη

Το αρχείο PID είναι απόδειξη μόνο όσο ταιριάζει με ζωντανή διεργασία. Βάλτε το σε κατάλογο του λογαριασμού υπηρεσίας και συγκρίνετε τον αριθμό με τον πίνακα διεργασιών πριν στείλετε σήμα. Επανεκκινήσεις και crashes αφήνουν το αρχείο, και ένα παλιό αρχείο είναι ο συνηθισμένος λόγος που ένα script διακοπής αναφέρει επιτυχία ενώ η σήραγγα είναι ακόμη πάνω. Θεωρήστε τον έλεγχο μέρος της διαδικασίας διακοπής, όχι προαιρετικό βήμα.

Στείλτε σήμα στο επαληθευμένο PID και μετά επιβεβαιώστε ότι η διεπαφή της σήραγγας εξαφανίστηκε πραγματικά αντί να εμπιστεύεστε την κατάσταση εξόδου. Αν ο πελάτης χρειάζεται αυξημένα δικαιώματα για τη διεπαφή, το σήμα πρέπει να έρθει από λογαριασμό που επιτρέπεται να το στείλει.

Μην στοιβάζετε το παρασκήνιο κάτω από επόπτη

Το systemd και παρόμοιοι επόπτες περιμένουν να κατέχουν τη διεργασία που ξεκίνησαν, γι' αυτό ένας πελάτης που διακλαδώνεται τους μπερδεύει. Ο επόπτης βλέπει τον εκκινητή να βγαίνει ενώ η πραγματική σύνδεση ζει, οπότε η λογική επανεκκίνησης, η αναφορά κατάστασης και τα timeouts διακοπής περιγράφουν κάτι που δεν ισχύει πια. Γράψτε τη μονάδα στην υποστηριζόμενη διάταξη προσκηνίου και αφήστε τον επόπτη να κάνει τη δουλειά του daemon.

Κρατήστε το --background για συνεδρίες που ξεκινά άνθρωπος και μετά φεύγει. Αν απαιτείται σήραγγα που υπάρχει πριν συνδεθεί κανείς, λείπει εγκεκριμένη μη διαδραστική ταυτότητα και σχέδιο ανανέωσής της, και κανένα flag γραμμής εντολών δεν παρέχει κάτι από τα δύο. Η προσθήκη του flag σε script εκκίνησης δίνει σήραγγα που αποτυγχάνει σιωπηλά στο πρώτο ληγμένο διαπιστευτήριο.

Αντιμετωπίστε το cookie συνεδρίας ως διαπιστευτήριο

Το OpenConnect τεκμηριώνει ξεχωριστή φάση ταυτοποίησης μέσω --authenticate και το υλικό που προκύπτει μπορεί να επιστραφεί με --cookie-on-stdin. Το ζεύγος υπάρχει για εργασία ενσωμάτωσης και ό,τι παράγει είναι τόσο ευαίσθητο όσο ο κωδικός που το δημιούργησε.

Κρατήστε την τιμή έξω από το ιστορικό του shell, από τα logs και από κάθε ticket που ανοίγετε. Ένα script παράδοσης πρέπει επίσης να διατηρεί τις επαληθευμένες πληροφορίες endpoint που έλαβε ο πελάτης μαζί με το cookie· αν χαθούν, μεταγενέστερη εκτέλεση μπορεί να συνδεθεί σε host που δεν ταυτοποιήσατε ποτέ, χειρότερο από σύνδεση που απλώς αποτυγχάνει.

Περάστε τη λίστα πριν κλείσετε το τερματικό

Τέσσερα πράγματα πρέπει να ισχύουν: η διαδραστική σύνδεση τελείωσε στο προσκήνιο, το αρχείο PID δείχνει επαληθευμένη διεργασία, το ζήτημα του επόπτη έχει λυθεί προς τη μία ή την άλλη κατεύθυνση και το cookie έχει σχέδιο αποθήκευσης που δεν είναι απλό αρχείο κειμένου. Όταν ισχύουν και τα τέσσερα, η αποχώρηση από το τερματικό είναι ασφαλής και η σήραγγα συνεχίζει.

Αν ένα αποτύχει, διορθώστε το πριν αγγίξετε τα άλλα, γιατί οι υπόλοιποι έλεγχοι δεν το αναπληρώνουν. Κρατήστε και το αρχείο προσκηνίου της πρώτης εκτέλεσης: την επόμενη φορά που η σήραγγα πέσει χωρίς προειδοποίηση, αυτή η βάση ξεχωρίζει αλλαγή στην πύλη από αλλαγή στον πελάτη.

Σχετικά άρθρα