טיפים על עבודה ב ssh

כאשר פותחים חיבורים של ssh,אנחנו מקבלים משהו שנקרא channels, שהם בעצם הצורה ש ssh מזהה את החיבורים שלנו על אותה "מנהרה" שמוצפנת.
חשוב להדגיש כי חיבור לשרתים שונים, לרוב לא יכללו את אותה המנהרה, אלא רק חיבורים לאותו השרת, אך כל חיבור מכיל channels.
אני נוהג להשתמש בצורה שבה כל חיבור לשרת, משתמש בsocket בודד, וכך עושה את החיבור יעיל אפילו יותר – היות וגם ככה כל חיבור מנוהל על ידי channel.

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

בתוך הספרייה ניצור קובץ בשם config ונכנס לו את ההגדרה הבאה:

Host *
  ControlPath ~/.ssh/sockets/master-%l-%r@%h:%p
  ControlMaster auto
  GSSAPIAuthentication=no
  ServerAliveInterval 25
  Compression yes
  IdentityFile ~/.ssh/id_rsa

ה"חלק" הזה שיצרנו בעצם יוצר קבוצה של הגדרות עבור 100% מהחיבורים שלנו (אלא אם נדרוס אותן). אנחנו יודעים זאת, בזכות הglob של כוכבית.
אנחנו אומרים לו ליצור קובץ socket על שם החיבור המדויק שלנו, ושopenssl ינהל אותו לבד. מדובר למעשה ב unix socket, וזה מה שמאפשר את השיתוף.
אנחנו אומרים למערכת שלנו כל 25 שניות לשלוח סוג של ping בשביל להשאיר את החיבור פתוח (אחרת יש חיבורים שיסגרו בשרתים שונים אם אין תגובה אחת לזמן מסוים), אנחנו דוחסים את המידע העובר עם החיבור, ובסוף אומרים מה המפתח ברירת המחדל שלנו.

כל האופציות האלו, הן אופציות שניתן להגדיר גם בשורת הפקודה, וגם תחת ssh_config שנמצא ב etc, אך כאן אנחנו עוקפים את ההגדרות של הקובץ האחרון, ובנוסף אין צורך ליצור משהו בשורת הפקודה, ואפילו alias מיותר.
בשורת הפקודה אנחנו מגדירים את רובם עם הדגל של ‎-o, ואז מציינים את ההגדרה שרוצים.

הקובץ של config מאפשר לנו גם לבצע הגדרות מדוייקות לשרתים שונים. למשל:

Host example
    Hostname 192.168.1.12
    Port 5012
    user example
    ForwardX11 yes
    LocalForward 8080
    ControlMaster no

כאן בעצם יצרנו פרופיל שנקרא example, אשר בעצם נמצא תחת 192.1268.1.12.
החיבור מתבצע בפורט 5012.
שם המשתמש לחיבור הוא example.
אנחנו יכולים להעביר תוכנות X11, אך לא ציינו כי אנו בוטחים בשרת.
ואנחנו מעבירים מהמחשב שלנו אל המחשב המרוחק את פורט 8080 (ביצוע של tunnel).
בנוסף, אנחנו מבטלים את החיבור של unix sockets עבור החיבור הזה, ובכך דורסים הגדרות גלובליות.

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

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

Supported escape sequences:
~. - terminate connection (and any multiplexed sessions)
~B - send a BREAK to the remote system
~C - open a command line
~R - request rekey
~V/v - decrease/increase verbosity (LogLevel)
~^Z - suspend ssh
~# - list forwarded connections
~& - background ssh (when waiting for connections to terminate)
~? - this message
~~ - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

במידה ונרצה לדעת מידע על צינורות למשל, נשתמש ב #~ :

The following connections are open:
  #1 client-session (t4 r0 i0/0 o0/0 fd 5/6 cc -1)

מקווה שזה יעזור לכם לעבוד טוב יותר גם עם ssh.

2 מחשבות על “טיפים על עבודה ב ssh

  1. Rabin

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

    אפשר לכפות על החיבור שלא לבצע multiplexing ע"י השימוש בתגית -M

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s