העברת ה-SSH מאזינה בפורט המקומי 13306, אך mysql עדיין מתחבר למסד הנתונים המקומי—או מדווח שה-socket המקומי שלו חסר. ב-Unix, לקוח MySQL שמקבל localhost יכול לבחור socket Unix במקום TCP. אספקת פורט לא בהכרח משנה את הבחירה הזו.

עבור העברת TCP מאושרת קיימת, הפוך את הפרוטוקול למפורש:

mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
  --user=dbuser --password

שם המשתמש הוא להמחשה; אפשרות הסיסמה מבקשת קלט אינטראקטיבי. הפקודה מתחברת למאזין ה-TCP המקומי במקום ל-socket Unix.

שמור את שתי הכניסות נפרדות

מסלול SSH קבוע יכול לקבל את הצורה הזו:

ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]

שרת ה-SSH של השער מגיע אל db.internal:3306. לאחר מכן MySQL מאמת את חשבון מסד הנתונים דרך זרם הבתים הזה. מפתח SSH שהתקבל אינו מעניק כניסה למסד הנתונים, והגבלות המקור של מסד הנתונים רואות את החיבור מגיע מהצד הזה של המסלול.

זהו מתאם TCP קבוע, לא הגדרת SOCKS שצורכת mysql. היישום אינו זקוק למשא ומתן SOCKS משום שלנקודת הקצה של ההעברה יש יעד אחד מוגדר מראש.

שמור על זהות ה-TLS המיועדת של מסד הנתונים ועל מדיניות האישורים במקום שבו הם משמשים. חיבור ה-socket ל-loopback אינו הופך אישור של מסד נתונים לתקף עבור שם שירות אחר. חיבור TCP מקומי מוצלח מכריע את בחירת התעבורה, לא את אימות מסד הנתונים המאוחר או בדיקות ה-TLS.

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