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

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

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

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

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

התקנת שרת SSH:

sudo apt-get install openssh-server

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

ssh user@hostname

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

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

ssh -Y user@hosname

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

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

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

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

מעט על DNS:

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

זה הרעיון שמאחורי DNS דינמי, וישנם אתרים שמספקים שם כזה בחינם, כמו DynDNS או No-IP. לאחר הרשמה קצרה באתר שלהם, תוכלו להתקין על השרת גם את תוכנת הלקוח. באובונטו אין צורך להוריד את התוכנה ישירות מהאתר, אפשר כמו תמיד להתקין בפשטות דרך מנהל החבילות. לי יש ניסיון עם 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/

בהצלחה!

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

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

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

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

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

שלח מאמר זה באימייל שלח מאמר זה באימייל
הדפס מאמר זה הדפס מאמר זה

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

  1. מאת אסף:

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

    אסף.

  2. מאת tsabar:

    אסף – צודק, שכחתי את זה.

  3. מאת תומר:

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

    בכל מקרה, רצוי לציין כי כדי שאפשר יהיה להפעיל יישומים גרפיים על מחשב מרוחק יש צורך בשרת X מקומי שיטפל בבקשה. אם המחשב המקומי שאיתו אתה מתחבר לשרת מריץ לינוקס אתה כנראה מסודר, אבל אם אתה על ווינדוס או מק יהיה צורך להריץ שרת X לשם כך. xming הוא שרת X מומלץ ל־Windows וניתן להורדה מכאן: http://sourceforge.net/projects/xming

    לגבי ssh, לדעתי שכחת את הדבר החשוב ביותר – לא חייבים להשתמש בשורת הפקודה כדי להעביר קבצים לשרת ה־ssh שלנו, מספיק לכתוב ssh://server_ip כדי להגיע אל השרת אם תוכנת מנהל הקבצים שלכם תומכת בחיבורי ssh, ובמקרים מסויימים אפשר אפילו לתת לתוכנות אחרות לעבוד על מערכת קבצים מרוחקת. אני משתמש ב־gedit, לדוגמה, כדי לבצע תיקונים באתרי ווב מרוחקים.

    מנהל הקבצים המובנה של ווינדוס לא יתאים למשימה. אם מסיבה כלשהי אתם נמצאים על ווינדוס נסו את winscp שניתנת להורדה מכאן: http://winscp.net

  4. מאת GuySoft:

    עוד שני דברים שימושיים:
    1. vnc בלי בלאגן
    ———-
    ענה עוד משהו שימושי, VNC שאפשר להריץ בקלות (רק לעשות apt-get install x11vnc

    #!/bin/bash
    x11vnc -passwd [password]
    exec $0

    2. FTP לכל תקייה באמצעות קובץ אחד!
    ————————-
    יש קובץ אחד בלבד בפייטון שמאשפר להרים שירות אפ-טי-פי לכל תקייה שרוצים. מנהדר שרוצים שמישהו יזרוק לך קובץ ולא רוצים להתחיל לתת סיסמאות מיוחדות וכו

    https://code.google.com/p/pyftpdlib/
    ואז אפשר ליצור קובץ שנראה כך:

    #!/usr/bin/python
    # -*- coding: windows-1255 -*-
    import ftpserver
    authorizer = ftpserver.DummyAuthorizer()
    authorizer.add_user("user", "password", "/home/guy/Desktop/etc", perm="elradfmw")
    #authorizer.add_anonymous("/home/nobody")
    ftp_handler = ftpserver.FTPHandler
    ftp_handler.authorizer = authorizer
    address = ("gnet.homelinux.com", 4590)
    ftpd = ftpserver.FTPServer(address, ftp_handler)
    ftpd.serve_forever()

  5. מאת a:

    עד כמה שידוע לי, מומלץ לא לערוך לבד את הקובץ crontab, אלא להשתמש באפשרות המובנית לכך:
    crontab -e
    בתוספת sudo בהתחלה – אם יש צורך בכך.

  6. מאת רם און:

    כאשר מחברים שרת לרשת, רצוי מאוד לבצע הקשחה מינמלית שלו. ובכלל, עדיף לא לשים מכונה המשמשת לצרכים "חשובים" ישירות על הרשת.

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

    אני גם נוהג להכניס הקשחות מינמלית. בשרת ה- ssh אני מגדיר שרק משתמשים ספציפים יוכלו להיכנס, ואני מוסיף ב- iptables אפשרות שכל פעם שמישהו מנסה להיכנס יותר מ-4 פעמים בדקה, הוא ננעל לכל הרוחות.

    לגבי גישה מרחוק, freenx יתן שליטה הרבה יותר מוצלחת מ-vnc.

  7. מאת tsabar:

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

השארת תגובה