- צבר – בלוג עם קוצים - http://tsabar.no-ip.org/blog -

המדריך לשרת ביתי: חלק שני – התחברות מרחוק

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

לדוגמא: האפשרות של אחסון קבצים "בענן" במחיר של בערך 30 ש"ח בחודש (חשבון חשמל) לכמה טרה-בתים, או האפשרות להראות את אלבום התמונות המשפחתי לחברים בלי להעלות אותו בעצמך לאתר אינטרנט חיצוני – פשוט העתק-הדבק לספריה משותפת בתוך הרשת הביתית.

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

סוג ההתחברות הראשון שאסקור, ושעליו אפשר "להלביש" סוגי התחברות אחרים, הוא SSH, או בשמו המלא – Secure SHell [1]. זוהי למעשה התחברות מוצפנת וקבלת גישה לשורת הפקודה (מסוף) במכונה מרוחקת (בדומה לטלנט, למי שמכיר).

התקנת שרת SSH:

sudo apt-get install openssh-server

לאחר מכן ניתן להתחבר לשרת ממסוף במחשב אחר ע"י הקלדת:

ssh user@hostname

כאשר user זה שם המשתמש שלכם באובונטו, ו-hostname זה מספר ה-IP של השרת – אם אתם מתחברים למחשב בבית, זה מספר ה-IP של המחשב בבית. אם אתם מתחברים למחשב בתוך הרשת הביתית, זה מספר ה-IP ברשת הביתית. לאחר הקלדת הסיסמא (לא תראו משהו מוקלד, אפילו לא כוכביות. זה בסדר) תקבלו את הסימן המוכר של המסוף של השרת שלכם.

אם יש לכם שרת אובונטו עם ממשק גרפי, תוכלו להתחבר אליו מרחוק ע"י הפקודה:

ssh -Y user@hosname

ולהפעיל עליו גם תוכנות גרפיות שיוצגו על המסך המרוחק (ניסיתם לשחק פעם במחשב של חברים סוליטר שפועל על המחשב בבית? :) )

מעט על כתובות IP:

מספר IP, או כתובת IP [2], היא כתובת ייחודית לכל מחשב ברשת האינטרנט, כך ניתן "להתקשר" לכל מחשב ברשת. בדיוק כמו השיטה הנושנה להתקשר למכשיר טלפון ע"י חיוג המספר שלו, גם ברשת מחשבים פועל אותו עיקרון: לכל מחשב יש מספר ייחודי רק לו בכל הרשת, ובמספר זה הוא זמין לכל מחשב שרוצה "לדבר" איתו. בעת התקשרות לאינטרנט, המחשב מקבל מספק האינטרנט כתובת IP ייחודית, ובעת ההתנתקות מהרשת, כתובת ה-IP "מוחזרת" לספק האינטרנט. למי שיש ראוטר ויותר ממחשב אחד בבית, לא מקבל יותר ממספר IP אחד, אלא משתמש במנגנון חכם שמתפקד כמו מסכה: כל המחשבים בבית שמחוברים לראוטר מקבלים מהראוטר מספרי IP "פנימיים", שאין באינטרנט, והראוטר מקבל מספק האינטרנט את המספר IP החיצוני. מחשבים מבחוץ שפונים למחשב שלכם, בעצם מגיעים לראוטר ולא למחשב, כי למחשב שמאחורי הראוטר אין כתובת IP חיצונית משלו. אם אתם עושים שרת ביתי והוא נמצא מאחורי ראוטר, תצטרכו להגדיר את הראוטר כך שיפנה כל פניה מבחוץ אל השרת שלכם. את ההגדרות לכך תוכלו למצוא בראוטר במה שנקרא "DMZ".

בגלל שמספרי IP בחיבורים פרטיים מתחלפים מפעם לפעם, ואין לכם מספר IP קבוע, לא תוכלו פשוט לשנן את המספר או לכתוב על פתק ולדעת שזוהי הכתובת שלכם – זה לא כמו מספר טלפון שנשאר קבוע. ישנם דרכים שונות לדעת את מספר ה-IP שלכם בבית. אחת מהן, אולי הפשוטה ביותר, היא לתת לשרת "שם" קבוע, גם אחרי שמתחלף לו הIP. כמו השם http://www.google.com/‏ [3], כך גם לשרת יהיה שם ותוכלו להתחבר אליו מרחוק ע"י השם הזה, גם בלי לדעת מה ה-IP שלו (ההמרה משם למספר IP מתבצעת אוטומטית מאחורי הקלעים).

מעט על DNS:

פרוטוקול ה-DNS, או בשמו המלא Domain Name System [4], מאפשר פניה לשמות מתחם (דומיינים) באינטרנט, במקום לפנות לכל שרת ע"פ כתובת ה-IP שלו. הפרוטוקול למעשה משמש כ"ספר הטלפונים" הגדול של רשת האינטרנט. שמות כמו גוגל [3] או וואלה [5], רשומים בספר הטלפונים הזה ופניה לשם שלהם מתורגמת לפניה לכתובת ה-IP שלהם. כשאתם מקלידים כתובת אינטרנט בדפדפן, הכתובת מומרת בצורה אוטומטית למספר IP, והדפדפן שלכם מתקשר עם השרת לפי מספר ה-IP שהוא קיבל (כתבתי על כך [6] בעבר). שרתים שיש להם שם דומיין בד"כ נשארים עם מספר IP קבוע, אבל כפי שציינתי, בחיבור פרטי זה לא יקרה. לכן יש אתרים שמאפשרים לרשום DNS דינמי – כזה שכל הזמן מחליף את המספר IP. תחשבו על זה כך: נניח שיש לכם חבר שכל הזמן מחליף מספרי טלפון עד שקשה לעקוב אחריו, אבל לשניכם יש חבר משותף שתמיד יודע מה המספר החדש של הבחור. בכל פעם שאתם רוצים להתקשר לחבר עם הטלפון המשתנה, אתם מתקשרים לחבר המשותף והוא מעדכן אתכם מה המספר הנוכחי של חברכם. פתרון פשוט, נכון?

זה הרעיון שמאחורי DNS דינמי, וישנם אתרים שמספקים שם כזה בחינם, כמו DynDNS [7] או No-IP [8]. לאחר הרשמה קצרה באתר שלהם, תוכלו להתקין על השרת גם את תוכנת הלקוח. באובונטו אין צורך להוריד את התוכנה ישירות מהאתר, אפשר כמו תמיד להתקין בפשטות דרך מנהל החבילות. לי יש ניסיון עם No-IP (וגם מעט עם DynDNS), ואין לי המלצה לספק מסוים כי כולם פחות או יותר בסדר. לאחר שנרשמתם לאתר ורשמתם לעצמכם תת-כתובת שתהיה שלכם, תתקינו את תוכנת הלקוח, שתדאג לדווח לאתר בכל פעם שכתובת ה-IP שלכם משתנה.

אמשיך את המדריך עם הקליינט של האתר No-IP. התקנה:

sudo apt-get install noip2

(חשוב לציין שיש גם קליינטים ל-DynDNS במרכז התוכנות של אובונטו)

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

מהניסיון שלי עם התוכנה הזו, היא לא תמיד מעדכנת כמו שצריך ומתי שצריך, ולכן הוספתי "עדכונים אוטומטיים" משל עצמי:

sudo apt-get install curl
sudo nano /etc/crontab

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

*/5 * * * * root noip2 -i $(curl http://ip.dnsexit.com/) &> /dev/null

את הקובץ שמרו ע"י Ctrl-O וצאו ממסך העריכה ע"י Ctrl-X.

נאתחל את מתזמן המשימות:

sudo /etc/init.d/cron restart

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

סוג אחר של התחברות, זה השתלטות על שולחן העבודה הגרפי באובונטו:

למי שיש אובונטו עם ממשק משתמש גרפי ורוצה לראות את שולחן העבודה שלו ממחשב מרוחק, מוזמן להגדיר כרצונו את ההגדרות המתאימות לו במערכת -> העדפות -> שולחן עבודה מרוחק (אין לי ניסיון עם unity בינתים. אתם מוזמנים להוסיף מנסיונכם). ההתחברות מהצד השני יכולה להתבצע ע"י תוכנות מתאימות כמעט מכל פלטפורמה (מי אמר חלונות 95?). אם במחשב ממנו תרצו להתחבר יש אובונטו, תפתחו את יישומים -> אינטרנט -> מציג שולחנות עבודה מרוחקים.

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

http://tomercohen.com/tag/ssh/ [9]

בהצלחה!

תוספת מאוחרת: למי שמעוניין להרים שרת עם התחברות מרחוק – בתגובות למאמר זה (למטה) יש מידע משלים נוסף לכתוב לעיל. תודה למגיבים.

חלקים נוספים במדריך לשרת ביתי:

חלק ראשון – שרת אינטרנט [10]

חלק שלישי – שיתוף אינטרנט ביתי [11]

חלק רביעי – שרת פרוקסי מאובטח [12]