NetworkManager-ssh מציג מחובר אבל שום דבר לא מנותב
המחוון מוכיח רק שקשר ה-SSH המנוהל קיים. בדקו אם התוסף בנה התקן מנהרה או קבוצת העברות, ואז בדקו את נתיב האפליקציה.
התפריט מציג את חיבור ה-SSH כפעיל, מפתח המארח התקבל, והדפדפן עדיין לא מגיע לשום דבר שהיה אמור להגיע אליו. זה אינו סתירה, כי פרופיל של NetworkManager-ssh יכול להפיק שתי תוצאות שונות לגמרי מאותו מארח ומאותו מפתח: התקן מנהרה שנושא מנות, או קבוצת העברות שרק אפליקציות מסוימות יכולות להשתמש בהן. המחוון מדווח שקשר ה-SSH המנוהל קיים. הוא לעולם אינו מדווח איזו משתי התוצאות קיבלתם.
שתי תוצאות מאחורי פריט תפריט אחד
שני המצבים מאמתים באותו אופן, וזו בדיוק הסיבה שהם מתבלבלים. בחירת הפרופיל בדיוק באותו אופן, עם אותם פרטי גישה, יכולה להשאיר אתכם עם ממשק שאפשר לנתב דרכו או עם שקע מאזין שצריך ליידע לגביו אפליקציה אחת.
התחילו בהחלטה איזו תוצאה המשימה באמת צריכה. דרישת נגישות לתת-רשת שלמה צריכה התקן. שירות אחד במארח מרוחק צריך העברה, ובניית מנהרה עבורו יוצרת בדרך כלל יותר עבודת ניתוב ממה שהבעיה הייתה שווה.
מה כל מצב חייב שיהיה לו לפני שהוא עובד
הפרויקט מתעד את שני המצבים, והדרישות המוקדמות שונות מספיק כדי שדרישה חסרה תיראה כמו כשל פרוטוקול ולא כמו בחירת תכנון.
| Mode | What must exist | What still has to be true |
|---|---|---|
| Tunnel device | Compatible TUN/TAP arrangement on both ends, permission, addressing | A route policy that actually sends the intended prefixes into it |
| Forwarding only | A chosen SOCKS, local-forward or remote-forward listener | A permitted destination path on the far side |
קראו היטב את העמודה הימנית, כי שם מסתיימות רוב הפניות האלה. אפילו התקן מנהרה שנבנה בצורה מושלמת מכסה רק את מה שהניתוב שולח אליו, ואפילו העברה מושלמת עוזרת רק לאפליקציות שנאמר להן להשתמש בה.
הממשק המדומה אינו מנהרה
במצב העברה התוסף מתעד ממשק מדומה שנוצר כדי לספק את מודל החיבור. הוא קיים כדי שלמנהל יהיה משהו שאליו אפשר לצרף מצב. הוא אינו נושא מנות אפליקציה שרירותיות אל הרשת המרוחקת, ושום דבר בנוכחותו אינו מרמז שהניתוב של IP השתנה.
דוגמאות המנהרה המלאה בפרויקט עוסקות בתמיכה בהתקן מנהרה של OpenSSH, כך שהמילה מנהרה בתווית מתארת יכולת, לא את המדיניות בפועל שלכם. בדקו מה הגרעין יעשה ולא איך הפרופיל נקרא.
nmcli connection show --active
ip -br link
ss -lntp | grep -E "1080|8080"
אחר כך התאימו את התוצאה לאפליקציה. תוכנית שמבינה SOCKS צריכה להיות מוגדרת להשתמש בפרוקסי. צרכן של העברה מקומית צריך להיות מופנה אל השקע המאזין שלו. אף אחד מהם לא מגלה את ההעברה בעצמו, ואף לאחד מהם לא עוזר מחוון חיבור שהפך לירוק.
הכינו את הצד המרוחק במקום לכפות אותו
חשבון SSH רגיל יכול לאמת את עצמו בלי שום הרשאה להעלות התקן מנהרה מרוחק. הפרויקט מתעד נתיב בלי הרשאות root שבו מנהל יוצר מראש את ההתקן עבור אותו משתמש, והלקוח בוחר אחר כך את המספר המתאים.
סידור כזה דורש תיאום עם מדיניות המנהרות של השרת ועם מי שמחזיק בכתובות ברשת המרוחקת. יצירת ההתקן אינה מעניקה בעצמה את נתיבי המשאבים, את הרשאות ההעברה או נתיב חזרה, ושום דבר מזה לא מגיע מפני שתצורת הדוגמה נראתה משכנעת.
מה שאסור לכם לעשות הוא לאפשר העברה בלתי מוגבלת או התחברות root מרחוק כדי לגרום לדוגמה לעבוד. היכן שהמפעיל מחזיק בהגדרת הרשת המרוחקת, השתמשו בסידור הנתמך כדי להשאיר את הפקודות האלה לאותו בעלים, והימנעו מעוזר שני שמשחזר כתובות סותרות בניתוק.
הקשר האימות, ומה לכתוב בפנייה
לאימות יש הקשר משלו. התוסף מחפש סוכן SSH המשויך להפעלת המשתמש ודורש שמארח היעד יהיה מוכר, כך שמפתח שעובד במסוף אחד אינו הופך אוטומטית לגלוי לנתיב האימות של המנהל. רשמו ובדקו את מפתח המארח דרך התהליך המאושר במקום לכבות את הבדיקה.
לתמיכה, רשמו ארבעה דברים: התוסף והגרסה, המצב שנבחר, הזהות המרוחקת המיועדת, והממשק או השקע המאזין שהיה אמור להופיע. אחר כך בדקו ישירות את נקודת הכניסה של האפליקציה. מחוון מחובר יחד עם בדיקה שעובדת הם ראיה; מחוון מחובר לבדו הוא הצהרה על SSH, לא על הניתוב או הרשאת המשאב שניסיתם להשיג.