חיבור שעובד אחרי ההתחברות ונכשל לפניה בדרך כלל אומר שניסיון האתחול לא הצליח להשיג סוד, ולא שהשרת דחה אחד. האישור קיים; ההקשר שמבקש אותו אינו קיים. ההבחנה הבודדת הזו חוסכת איפוס סיסמה מיותר.

עקוב אחרי הבקשה: משהו מפעיל את החיבור לפני שקיימת הפעלת שולחן עבודה, ומאגר הסודות שבדרך כלל עונה עדיין לא נפתח. שני ההקשרים חלוקים על מי מחזיק בסוד, והפרופיל רושם מי מהם אמור לספק אותו.

מה נתיב האתחול באמת מבקש

באתחול, NetworkManager עולה כשירות מערכת בלי הפעלת משתמש, בלי D-Bus של הפעלה ובלי מחזיק מפתחות פרום. עדיין אפשר להעלות פרופיל חיבור, אבל רק עם סודות שהשירות יכול להגיע אליהם בעצמו. כל מה שבבעלות סוכן סודות ממתין עד שאדם מתחבר והסוכן מופיע. השירות עושה בדיוק מה שהתצורה שלו אומרת; הפרופיל הוא הדבר שצריך להשתנות.

הכשל כתוב בתוך החיבור ולא מוסתר במחזיק מפתחות.

לקרוא את דגלי הסוד של חיבור

שאל את החיבור מה הוא מצפה, לא מה שולחן העבודה זוכר. עמודת הדגלים עונה על השאלה ישירות, והיא שורדת אתחולים בקובץ הפרופיל שעל הדיסק.

התחל ברשימת הפרופילים, ואז אשר איזה חיבור מוגדר לעלות מעצמו. אחר כך שפוך חיבור אחד וקרא את דגלי הסיסמה:

nmcli -f NAME,UUID,TYPE,AUTOCONNECT connection show
nmcli connection show "Work VPN" | grep -i -E "password|secret|key"
journalctl -b -u NetworkManager --grep "secret"

הפקודה הראשונה מאשרת אילו פרופילים קיימים ואם אחד מוגדר לחיבור אוטומטי, וזו הדרך שבה ניסיון ללא השגחה מתחיל מלכתחילה. השנייה חושפת את ערכי הדגלים, והשלישית מציגה את השירות מתלונן שאף סוכן לא ענה עבור סוד נתון. שורת יומן שמכנה סוד כשייך לסוכן היא כל האבחנה במשפט אחד.

Flag valueWhere the secret livesBehaviour before login
0Stored in the connection profileAvailable to the system service
1Owned by a secret agentBlocks until the agent is unlocked
2Never storedPrompts on every activation
4Not requiredNever requested at all

למה העברת החיבור לתחום המערכת משנה את התשובה

חיבור בבעלות משתמש מופעל תחת הסוכן של אותו משתמש, ולכן הוא עובד בצורה מושלמת ברגע ששולחן העבודה עולה. העברתו לתחום המערכת מסירה את הסוכן מהנתיב, כך שאותו פרופיל מתנהג אחרת בלי שינוי של שורה אחת בתצורת ה-VPN.

ההעברה הזו היא עיצוב לגיטימי, והיא נושאת דרישה: הסוד חייב להיות נגיש לשירות המערכת. אחסונו בפרופיל, אספקתו דרך אישור בתחום המערכת או קבלת בקשה אינטראקטיבית ברגע הנכון הם כולם תשובות תקפות. להשאיר את דגל 1 ולקוות זה לא.

מפתח פרטי עם מילת צופן משלו מוסיף שכבה שנייה. אפילו סיסמת חשבון שמורה לא תפתח מפתח שרוצה מילת צופן, לכן ודא איזה סוד השלב שנכשל באמת מבקש לפני שאתה משנה משהו.

מה לא לעשות, ומה לעשות במקום

הפיכת כל קובץ אישורים לקריא לכולם, או כיבוי האימות כדי שלא תידרש בקשה, מחליפה אי-נוחות באתחול בחשיפה קבועה. שניהם גם מסתירים את התלות במקום לפתור אותה, ועדכון התמונה הבא מחזיר את אותו כשל.

בשלב הזה, פעלו לפי המנגנון שההפצה שלך מתעדת להפעלה ללא השגחה, ואז אשר שדגלי הפרופיל תואמים לו. בדוק את התוצאה מאתחול נקי ולא ממעטפת שכבר יש לה סוכן. רשום את בעל החיבור, את מקור הסוד ואת השלב שחייב לעבוד, כדי ששינוי מאוחר בהפעלה האוטומטית לא יוכל להחזיר בשקט תלות בכך שמישהו יפתח קודם שולחן עבודה. תיעוד הוא ההבדל בין שירות מתוקן לבין אחד שנשבר שוב ברבעון הבא.

בדוק מאתחול נקי מבוקר ולא מניסיון חוזר ידני אחרי התחברות. הניסיון החוזר מצליח מהסיבה שהניסיון באתחול נכשל, וזו בדיוק הראיה שבדיקה מהירה הורסת.

מאמרים קשורים