יסודות SSH: עבודה עם שרתי SSH, לקוחות ומפתחות

הקדמה

SSH הוא פרוטוקול מאובטח המשמש כדרך העיקרית להתחברות לשרתי Linux מרחוק. הוא מספק ממשק מבוסס טקסט על ידי הפעלת מסלול רחוק. לאחר התחברות, כל הפקודות שאת/ה מקליד/ה בטרמינל המקומי שלך נשלחות לשרת המרוחק ומבוצעות שם.

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

הפוך את היישומים הראשיים שלך מ-GitHub באמצעות פלטפורמת האפליקציות של DigitalOcean. הרגע על DigitalOcean להתמקד בגדילת היישום שלך.

איך להשתמש במדריך זה

  • קרא/י את חלק סקירת SSH תחילה אם אינך מוכר/ה עם SSH בכלל או פשוט מתחיל/ה.
  • השתמש/י בחלקים הבאים בהתאם למה שאת/ה מנסה/ת להשיג. רוב הקטעים אינם מתייחסים לקטעים אחרים, כך שתוכל/י להשתמש בדוגמאות הבאות באופן עצמאי.
  • שימוש בתפריט התוכן בצד שמאל של הדף (ברוחב דף רחב) או בפונקציה המצא של הדפדפן שלך כדי לאתר את הקטעים שאתה צריך.
  • העתק והדבק את דוגמאות הפקודות הנתונות, והחלף את הערכים המסומנים בצבע מודגש עם הערכים שלך.

סקירת SSH

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

איך SSH פועלת

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

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

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

איך SSH מאמת משתמשים

לקוחות מאמתים בדרך כלל באמצעות סיסמאות (פחות מאובטח ולא מומלץ) או מפתחות SSH, שהם מאוד מאובטחים.

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

מפתחות SSH הם זוג מפתחות קריפטוגרפיים שמשמשים לאימות. כל זוג מכיל מפתח ציבורי ומפתח פרטי. המפתח הציבורי יכול להיות משותף בחופשיות ללא דאגה, בעוד שהמפתח הפרטי חייב להישמר בידידות ולעולם לא לחשוף לאף אחד.

כדי לאמת באמצעות מפתחות SSH, משתמש חייב לקבל זוג מפתחות SSH במחשב המקומי שלו. על השרת המרוחק, יש להעתיק את המפתח הציבורי לקובץ בתוך תיקיית הבית של המשתמש בנתיב ~/.ssh/authorized_keys. קובץ זה מכיל רשימה של מפתחות ציבוריים, אחד לכל שורה, שמורשים להתחבר לחשבון זה.

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

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

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

יצירת ועבודה עם מפתחות SSH

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

יצירת זוג מפתחות SSH

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

A number of cryptographic algorithms can be used to generate SSH keys, including RSA, DSA, and ECDSA. RSA keys are generally preferred and are the default key type.

כדי ליצור זוג מפתחות RSA במחשב המקומי שלך, הקלד:

  1. ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):

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

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

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

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

Output
Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 8c:e9:7c:fa:bf:c4:e5:9c:c9:b8:60:1f:fe:1c:d3:8a root@here The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | + | | o S . | | o . * + | | o + = O . | | + = = + | | ....Eo+ | +-----------------+

תהליך זה יוצר זוג מפתחות SSH של RSA, הממוקם בתיקייה המוסתרת .ssh בתיקיית הבית של המשתמש שלך. הקבצים הם:

  • ~/.ssh/id_rsa: המפתח הפרטי. אל תשתף את הקובץ הזה!
  • ~/.ssh/id_rsa.pub: המפתח הציבורי המקושר. ניתן לשתף בחופשיות מבלי שייגרם נזק.

צור זוג מפתחות SSH עם מספר גדול יותר של ביטים

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

כדי לעשות זאת, כלול את הארגומנט -b עם מספר הביטים שתרצה. רוב השרתים תומכים במפתחות באורך של לפחות 4096 ביטים. מפתחות ארוכים יותר עשויים לא להתקבל מטעמי הגנה מפני DDOS:

  1. ssh-keygen -b 4096

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

Overwrite (y/n)?

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

הסרת או שינוי הסיסמה על מפתח פרטי

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

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

כדי לשנות או להסיר את הסיסמה, פשוט הקלד:

  1. ssh-keygen -p
Enter file in which the key is (/root/.ssh/id_rsa):

אתה יכול להקליד את מיקום המפתח שברצונך לשנות או ללחוץ על ENTER כדי לקבל את הערך המוגדר כברירת מחדל:

Enter old passphrase:

הזן את הסיסמה הישנה שברצונך לשנות. לאחר מכן תתבקש להזין סיסמה חדשה:

Enter new passphrase (empty for no passphrase):
Enter same passphrase again:

כאן, הזן את הסיסמה החדשה שלך או לחץ על ENTER כדי להסיר את הסיסמה.

הצגת טביעת האצבע של המפתח של SSH

כל זוג מפתחות SSH משתף טביעת אצבע "קריפטוגרפית" יחידה שניתן להשתמש בה כדי לזהות באופן ייחודי את המפתחות. זה עשוי להיות שימושי במגוון של מקרים.

כדי למצוא את טביעת האצבע של מפתח SSH, הקלד:

  1. ssh-keygen -l
Enter file in which the key is (/root/.ssh/id_rsa):

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

Output
4096 8e:c4:82:47:87:c2:26:4b:68:ff:96:1a:39:62:9e:4e demo@test (RSA)

העתקת מפתח ה-SSH הציבורי שלך אל שרת באמצעות SSH-Copy-ID

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

אם כרגע יש לך גישת גישה ל-SSH המבוססת על סיסמה לשרת שלך, ואתה משתמש ביישום ssh-copy-id, תהליך זה פשוט. כלי ה-ssh-copy-id כלול באריזות ה-OpenSSH של רבות מההפצות של Linux, לכן יתכן מאוד שהוא יהיה מותקן כבר כברירת מחדל.

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

  1. ssh-copy-id username@remote_host

זה יבקש ממך את סיסמת החשבון המשתמש במערכת המרוחקת:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

לאחר הקלדת הסיסמה, תוכן המפתח שלך ~/.ssh/id_rsa.pub יתווסף לסוף קובץ ~/.ssh/authorized_keys של חשבון המשתמש:

Output
Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added.

אתה יכול כעת להתחבר לחשבון ההוא בלי סיסמה:

  1. ssh username@remote_host

העתקת המפתח הציבורי שלך לשרת ללא שימוש ב־SSH-Copy-ID

אם אין לך את הכלי ssh-copy-id זמין, אך יש לך גישת SSH באמצעות סיסמה לשרת המרוחק, תוכל להעתיק את תוכן מפתחך הציבורי בדרך אחרת.

ניתן להדפיס את תוכן המפתח ולשלוף אותו לתוך פקודת ה־ssh. בצד המרוחק, תוכל לוודא שהתיקייה ~/.ssh קיימת, ולאחר מכן להוסיף את התוכן שנשלף כתקופת הרוב בקובץ ~/.ssh/authorized_keys:

  1. cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

ישלך התבקש לספק את הסיסמה לחשבון המרוחק:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
[email protected]'s password:

לאחר הזנת הסיסמה, המפתח שלך יועתק, מאפשר לך להתחבר בלי סיסמה:

  1. ssh username@remote_IP_host

העתקת המפתח הציבורי שלך לשרת באופן ידני

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

במחשב המקומי שלך, תוכל למצוא את תוכן קובץ המפתח הציבורי שלך על ידי הקלדה:

  1. cat ~/.ssh/id_rsa.pub
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

ניתן להעתיק את הערך הזה ולהדביק אותו באופן ידני למיקום המתאים בשרת הרחוק. יהיה עליך להתחבר לשרת הרחוק דרך דרכים אחרות (כמו למשל עם עזרת ממשק האינטרנט של DigitalOcean).

בשרת הרחוק, צור את התיקייה ~/.ssh אם היא עדיין לא קיימת:

  1. mkdir -p ~/.ssh

לאחר מכן, ניתן ליצור או להוסיף לקובץ ~/.ssh/authorized_keys על ידי הקלדת:

  1. echo public_key_string >> ~/.ssh/authorized_keys

עכשיו אתה צריך להיות מסוגל להתחבר לשרת הרחוק בלי סיסמה.

הוראות חיבור בסיסיות

החלק הבא יכסה חלק מהיסודות על כיצד להתחבר לשרת באמצעות SSH.

מתחבר לשרת רחוק

כדי להתחבר לשרת רחוק ולפתוח שם ישיבת של קופסת חלון, ניתן להשתמש בפקודת ssh.

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

  1. ssh remote_host

אם שם המשתמש שלך שונה בשרת הרחוק, עליך להעביר את שם המשתמש הרחוק כך:

  1. ssh username@remote_host

בפעם הראשונה שאתה מתחבר למארח חדש, תראה הודעה שתיראה כך:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

הקלד כן כדי לקבל את אימות תוקף המארח הרחוק.

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

הרצת פקודה יחידה על שרת רחוק

כדי להריץ פקודה יחידה על שרת רחוק במקום להפעיל ישיבת מסוף, תוכל להוסיף את הפקודה לאחר מידע התחברות, כמו כן:

  1. ssh username@remote_host command_to_run

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

התחברות לשרת בפורט שונה

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

אתה יכול לעשות זאת על ידי ציון מספר הפורט עם האפשרות -p:

  1. ssh -p port_num username@remote_host

כדי למנוע ממך לעשות זאת בכל פעם שאתה מתחבר לשרת המרוחק שלך, אתה יכול ליצור או לערוך קובץ התצורה בתיקיית ~/.ssh בתוך תיקיית הבית של המחשב המקומי שלך.

ערוך או צור את הקובץ כעת על ידי הקלדה:

  1. nano ~/.ssh/config

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

~/.ssh/config
Host remote_alias
    HostName remote_host
    Port port_num

זה יאפשר לך להתחבר מבלי לציין את מספר הפורט הספציפי בשורת הפקודה.

הוספת המפתחות שלך ל-Agent של SSH כדי למנוע הקלדת המספר הסודי

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

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

זה חשוב גם אם נדרש לך להעביר את אישורי ה-SSH שלך (המוצגים מאוחר יותר).

כדי להתחיל את ה-Agent של SSH, הקלד את הפקודה הבאה לתיק המקומי שלך:

  1. eval $(ssh-agent)
Output
Agent pid 10891

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

  1. ssh-add
Enter passphrase for /home/demo/.ssh/id_rsa:
Identity added: /home/demo/.ssh/id_rsa (/home/demo/.ssh/id_rsa)

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

העברת האישורים של SSH שלך לשימוש בשרת

אם ברצונך להתחבר לשרת מתוך שרת אחר ללא סיסמה, עליך להעביר את מידע מפתח ה־SSH שלך. זה יאפשר לך לאמת לשרת אחר דרך השרת שאתה מחובר אליו, באמצעות האישורים במחשב המקומי שלך.

עליך להתחיל על מנת להפעיל את הסוכן שלך ולהוסיף את מפתח ה־SSH שלך לסוכן (ראה למעלה). לאחר שזה נעשה, עליך להתחבר לשרת הראשון שלך באמצעות האפשרות -A. זה מעביר את האישורים שלך לשרת למהלך הזה:

  1. ssh -A username@remote_host

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

אפשרויות הגדרת צד השרת

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

ניטרול האימות בסיסמה

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

על מנת לבצע זאת, יש להתחבר לשרת המרוחק שלך ולפתוח את קובץ /etc/ssh/sshd_config עם הרשאות root או sudo:

  1. sudo nano /etc/ssh/sshd_config

בתוך הקובץ, חפש את הפקודה PasswordAuthentication. אם היא מפוסקת, בצע הפעלה לה:

/etc/ssh/sshd_config
PasswordAuthentication no

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

ב-Ubuntu/Debian:

  1. sudo service ssh restart

ב-CentOS/Fedora:

  1. sudo service sshd restart

עכשיו, כל החשבונות במערכת לא יוכלו להתחבר באמצעות SSH באמצעות סיסמאות.

שינוי פורט בו ה-Daemon של SSH רץ

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

כדי לשנות את הפורט שבו השרת של SSH מאזין, עליך להיכנס לשרת הרחוק. פתח את קובץ התצורה של sshd במערכת המרוחקת עם הרשאות root, באמצעות התחברות עם משתמש זה או באמצעות השימוש ב־sudo:

  1. sudo nano /etc/ssh/sshd_config

פעם שאתה נמצא בתוך הקובץ, תוכל לשנות את הפורט שבו SSH רץ על ידי מציאת המפרט Port 22 ושינויו כך שיתאם לפורט שברצונך להשתמש בו. לדוגמה, כדי לשנות את הפורט ל־4444, הזן את זה בקובץ שלך:

/etc/ssh/sshd_config
#Port 22
Port 4444

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

ב־Ubuntu/Debian:

  1. sudo service ssh restart

ב־CentOS/Fedora:

  1. sudo service sshd restart

לאחר שאתה מאתחל את הדמון, יהיה עליך לאמת על ידי ציון מספר הפורט (הודגש בסעיף קודם).

הגבלת המשתמשים שיכולים להתחבר דרך SSH

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

על השרת הרחוק שלך, פתח כעת את הקובץ הזה עם הרשאות root או sudo:

  1. sudo nano /etc/ssh/sshd_config

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

/etc/ssh/sshd_config
AllowUsers user1 user2

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

באובונטו/דביאן:

  1. sudo service ssh restart

בסנטוס/פדורה:

  1. sudo service sshd restart

אם אתה נוח יותר עם ניהול קבוצות, אפשר להשתמש בהוראת AllowGroups במקום. אם זה המקרה, פשוט הוסף קבוצה אחת שצריכה לקבל גישה SSH (ניצור קבוצה זו ונוסיף חברים ברגע):

/etc/ssh/sshd_config
AllowGroups sshmembers

שמור וסגור את הקובץ.

כעת, אתה יכול ליצור קבוצת מערכת (ללא ספריית בית) התואמת לקבוצה שצוינה על ידי הקלדה:

  1. sudo groupadd -r sshmembers

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

  1. sudo usermod -a -G sshmembers user1
  2. sudo usermod -a -G sshmembers user2

כעת, הפעל מחדש את שירות SSH כדי ליישם את השינויים שלך.

באובונטו/דביאן:

  1. sudo service ssh restart

בסנטוס/פדורה:

  1. sudo service sshd restart

ניטרול התחברות כשורש

לעתים קרובות מומלץ לנטרל לחלוטין התחברות כשורש דרך SSH לאחר שהגדרת חשבון משתמש SSH המקבל sudo עדרות.

כדי לעשות זאת, פתח את קובץ התצורה של השירות SSH עם זכויות root או sudo בשרת הרחוק שלך.

  1. sudo nano /etc/ssh/sshd_config

בתוך הקובץ, חפש הנחייה בשם PermitRootLogin. אם היא מפוטרת, בטל את ההערה. שנה את הערך ל-"no":

/etc/ssh/sshd_config
PermitRootLogin no

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

באובונטו/דביאן:

  1. sudo service ssh restart

ב־CentOS/Fedora:

  1. sudo service sshd restart

אפשרות גישה לשורש לפקודות ספציפיות

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

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

הוסף את המפתח מהמחשב המקומי שברצונך להשתמש בו לתהליך זה (אנו ממליצים ליצור מפתח חדש עבור כל תהליך אוטומטי) לקובץ ה־authorized_keys של משתמש השורש בשרת. נדגיש זאת בעזרת הפקודה ssh-copy-id כאן, אך תוכל להשתמש בכל אחת מהשיטות להעתקת מפתחות שנדון בהן באזורים אחרים:

  1. ssh-copy-id root@remote_host

כעת, התחבר לשרת רחוק. נצטרך להתאים את הערך בקובץ ה־authorized_keys, אז פתח אותו עם גישה לשורש או עם sudo:

  1. sudo nano /root/.ssh/authorized_keys

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

/root/.ssh/authorized_keys
command="/path/to/command arg1 arg2" ssh-rsa ...

שמור וסגור את הקובץ כאשר תסיים.

עכשיו, פתח את קובץ ה-sshd_config עם הרשאות root או sudo:

  1. sudo nano /etc/ssh/sshd_config

מצא את ההוראה PermitRootLogin, ושנה את הערך ל-forced-commands-only. זה יאפשר להתחברויות SSH עם מפתח להשתמש במשתמש root רק כאשר פקודה ספציפית הוגדרה עבור המפתח:

/etc/ssh/sshd_config
PermitRootLogin forced-commands-only

שמור וסגור את הקובץ. הפעל מחדש את סדנת ה-SSH כדי ליישם את השינויים שלך.

על Ubuntu/Debian:

  1. sudo service ssh restart

על CentOS/Fedora:

  1. sudo service sshd restart

העברת תצוגת אפליקציות X ללקוח

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

כדי לאפשר פונקציונליות זו, התחבר לשרת המרוחק וערוך את קובץ ה-sshd_config בעל הרשאות root או sudo:

  1. sudo nano /etc/ssh/sshd_config

חפש את ההוראה X11Forwarding. אם היא מסומנת בהערה, בטל את ההערה. צור אותה אם נדרש והגדר את הערך ל-"yes":

/etc/ssh/sshd_config
X11Forwarding yes

שמור וסגור את הקובץ. הפעל מחדש את דמון ה־SSH כדי ליישם את השינויים האלה.

ב־Ubuntu/Debian:

  1. sudo service ssh restart

ב־CentOS/Fedora:

  1. sudo service sshd restart

כדי להתחבר לשרת ולהעביר את התצוגה של אפליקציה, עליך לעבור עם האופציה -X מהלקוח בעת התחברות:

  1. ssh -X username@remote_host

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

אפשרויות הגדרת הלקוח

בקטע הבא, נתמקד באפשרויות להתאמה אישית שניתן לבצע בצד של הלקוח של החיבור.

הגדרת מידע ספציפי לשרת

על המחשב המקומי שלך, ניתן להגדיר הגדרות אישיות לאחד או לכמה מהשרתים שאתה מתחבר אליהם. ניתן לאחסן אותם בקובץ ~/.ssh/config, שנקרא על ידי סוכן ה־SSH שלך בכל פעם שהוא נקרא.

צור או פתח קובץ זה בעורך הטקסט על המחשב המקומי שלך:

  1. nano ~/.ssh/config

בתוך זה, ניתן להגדיר אפשרויות תצורה אישיות על ידי הצגת כל אחת עם מילת מפתח Host, לאחר מכן שם כינוי. מתחת לכך ובריווח זניח, תוכל להגדיר כל אחת מההוראות שנמצאות בדף הרשמי של ssh_config:

  1. man ssh_config

דוגמה להגדרת הגדרה היא:

~/.ssh/config
Host testhost
    HostName your_domain
    Port 4444
    User demo

תוכל אז להתחבר אל your_domain בפורט 4444 באמצעות שם משתמש demo פשוט על ידי הקלדת:

  1. ssh testhost

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

~/.ssh/config
Host *
    ForwardX11 no

Host testhost
    HostName your_domain
    ForwardX11 yes
    Port 4444
    User demo

שמור וסגור את הקובץ כאשר תסיים.

שמירת חיבורים פעילים למניעת פסק זמן

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

ניתן להגדיר לקוח שלך לשלוח חבילה לשרת לעתים קרובות כדי למנוע מצב זה:

במחשב המקומי שלך, תוכל להגדיר זאת עבור כל חיבור על ידי עריכת קובץ ה-~/.ssh/config שלך. פתח אותו כעת:

  1. nano ~/.ssh/config

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

~/.ssh/config
Host *
    ServerAliveInterval 120

שמור וסגור את הקובץ כאשר תסיים.

ניטרול בדיקת המארח

בברירת מחדל, בכל פעם שאתה מתחבר לשרת חדש, יוצג לך טביעת האצבע של קודם המערכת המרוחקת של שירות ה־SSH.

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

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

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

כדי לבצע את השינוי, פתח את קובץ ~/.ssh/config על המחשב המקומי שלך:

  1. nano ~/.ssh/config

אם לא קיים כבר, בראש הקובץ, הגדר סעיף שיתאים לכל המארחים. הגדר את ההוראת StrictHostKeyChecking ל־no כדי להוסיף מארחים חדשים אוטומטית לקובץ known_hosts. הגדר את UserKnownHostsFile ל־/dev/null כדי לא להצג התראה על מארחים חדשים או שונים:

~/.ssh/config
Host *
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

אתה יכול להפעיל את הבדיקה במקרה למקרה על ידי הפיכת אופציות אלו לשונות עבור מארחים אחרים. הסטנדרטי עבור StrictHostKeyChecking הוא ask:

~/.ssh/config
Host *
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

Host testhost
    HostName your_domain
    StrictHostKeyChecking ask
    UserKnownHostsFile /home/demo/.ssh/known_hosts

מרובה שימושים של SSH דרך חיבור TCP יחיד

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

מרובה שימושים ב-SSH משתמש מחדש באותו חיבור TCP עבור מספר רב של ישיבות SSH. זה מסיר חלק מהעבודה הנדרשת להקים ישיבה חדשה, ועשוי להאיץ את התהליך. הגבלת מספר החיבורים עשויה גם להיות מועילה לסיבות אחרות.

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

כדי להגדיר מרובה שימושים, ערוך את קובץ ההגדרות של הלקוח שלך SSH על המחשב המקומי שלך:

  1. nano ~/.ssh/config

אם עדיין אין לך הגדרת מארח כללית בראש הקובץ, הוסף אחת כעת (כמו Host *). נקבע את הערכים ControlMaster, ControlPath, ו-ControlPersist כדי להקים את ההגדרות שלנו למרובה שימושים.

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

הגדרת האפשרות ControlPersist ל־1 תאפשר לחיבור הראשון של המאסטר להיות ברקע. ה־1 מציין שהחיבור TCP יסתיים אוטומטית שנייה אחרי שהסשן האחרון של SSH נסגר:

/.ssh/config
Host *
    ControlMaster auto
    ControlPath ~/.ssh/multiplex/%r@%h:%p
    ControlPersist 1

שמור וסגור את הקובץ כשתסיים. עכשיו, אנו צריכים ליצור את התיקייה שצוינה בנתיב השליטה:

  1. mkdir ~/.ssh/multiplex

עכשיו, כל הסשנים שמתקיימים עם אותו מכונה ינסו להשתמש בקונקטור ובחיבור TCP הקיימים. כאשר הסשן האחרון קיים, החיבור ייתפקע אחרי שנייה אחת.

אם לכל סיבה שהיא נדרש להתעלם מהגדרת המולטיפלקסינג באופן זמני, ניתן לעשות זאת על ידי מעבר עם הדגל -S עם none:

  1. ssh -S none username@remote_host

הגדרת טנאלים של SSH

הנעה של תעבורה אחרת דרך טנאל מאובטח של SSH היא דרך מצוינת לעבוד מעבר להגבלות האש שמופעלות. זה גם דרך נהדרת להצפין תעבורת רשתת שאחרת הייתה בלתי מצופנת.

הגדרת טנונים מקומיים אל שרת

חיבורי SSH ניתן להשתמש בהם כדי להטניל תעבורה מפורטים במארח המקומי אל פורטים במארח מרוחק.

A local connection is a way of accessing a network location from your local computer through your remote host. First, an SSH connection is established to your remote host. On the remote server, a connection is made to an external (or internal) network address provided by the user and traffic to this location is tunneled to your local computer on a specified port.

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

כדי להקים טונל מקומי לשרת המרוחק שלך, עליך להשתמש בפרמטר -L בעת התחברות ולספק שלושה חלקי מידע נוספים:

  • הפורט המקומי שבו ברצונך לגשת לחיבור הטונל.
  • המארח שברצונך שהמארח המרוחק שלך יתחבר אליו.
  • הפורט שברצונך שהמארח המרוחק שלך יתחבר אליו.

אלו ניתנים, בסדר המצויין לעיל (מופרדים בפיצולות), כארגומנטים לדגל -L. נשתמש גם בדגל -f, המפעיל את SSH ברקע לפני ביצוע ובדגל -N, שאינו פותח מסוף או מבצע תוכנית בצד המרוחק.

לדוגמה, כדי להתחבר ל־your_domain בפורט 80 על המארח המרוחק שלך, ולהפוך את החיבור זמין במחשב המקומי שלך בפורט 8888, תוכל להקליד:

  1. ssh -f -N -L 8888:your_domain:80 username@remote_host

עכשיו, אם תפנה את דפדפן האינטרנט המקומי שלך אל 127.0.0.1:8888, אתה אמור לראות את התוכן שב־your_domain על פורט 80.

A more general guide to the syntax is:

  1. ssh -L your_port:site_or_IP_to_access:site_port username@host

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

  1. ps aux | grep 8888
Output
1001 5965 0.0 0.0 48168 1136 ? Ss 12:28 0:00 ssh -f -N -L 8888:your_domain:80 username@remote_host 1001 6113 0.0 0.0 13648 952 pts/2 S+ 12:37 0:00 grep --colour=auto 8888

אתה יכול להרוג את התהליך על ידי מיצוב ה־PID, שהוא המספר בעמודה השנייה של השורה שמתאימה לפקודת ה־SSH שלך:

  1. kill 5965

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

הגדרת ניתוב רחוק אל שרת

חיבורי SSH ניתן להשתמש בהם לטנון תעבורה מפורטים במחשב המקומי לפורטים במחשב רחוק.

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

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

כדי להקים טונל מרחוק לשרת המרוחק שלך, עליך להשתמש בפרמטר -R בעת התחברות ועליך לספק שלושה פרטים נוספים:

  • הפורט שבו המארח המרוחק יכול לגשת לחיבור הטונל.
  • המארח שבו ברצונך שמחשב המקומי שלך יתחבר אליו.
  • הפורט שבו ברצונך שמחשב המקומי שלך יתחבר אליו.

אלה מסופקים, בסדר הנ"ל (מופרדים באמצעות נקודותיים), כארגומנטים לדגל -R. נשתמש גם בדגל -f, שגורם ל-SSH להיכנס לרקע לפני ביצוע הפקודה ובדגל -N, שאינו פותח מסלול או מפעיל תוכנית בצד המרוחק.

לדוגמה, כדי להתחבר אל your_domain בפורט 80 במחשב המקומי שלנו, ולהנגיש את החיבור בשרת המרוחק שלנו בפורט 8888, ניתן להקליד:

  1. ssh -f -N -R 8888:your_domain:80 username@remote_host

כעת, בשרת המרוחק, פתיחת דפדפן אינטרנט אל 127.0.0.1:8888 יאפשר לך לראות את כל התוכן שב-your_domain בפורט 80.

A more general guide to the syntax is:

  1. ssh -R remote_port:site_or_IP_to_access:site_port username@host

מאחר והחיבור נמצא ברקע, עליך למצוא את ה- PID שלו כדי להשמיד אותו. תוכל לעשות זאת על ידי חיפוש אחר הפורט שהעברת:

  1. ps aux | grep 8888
Output
1001 5965 0.0 0.0 48168 1136 ? Ss 12:28 0:00 ssh -f -N -R 8888:your_domain:80 username@remote_host 1001 6113 0.0 0.0 13648 952 pts/2 S+ 12:37 0:00 grep --colour=auto 8888

אז תוכל להשמיד את התהליך על ידי התמקדות ב-PID, שהוא המספר בעמודה השנייה, של השורה שתואמת את פקודת ה-SSH שלך:

  1. kill 5965

אפשרות נוספת היא להתחיל את החיבור בלי הדגל -f. זה ישמור על החיבור ברקע, מונע מך להשתמש בחלון הטרמינל במשך זמן ההעברה. היתרון של זה הוא שניתן להרוג בקלות את המנהרה על ידי הקלדת CTRL-C.

קיבוע טנון דינמי לשרת רחוק

חיבורי SSH ניתן להשתמש בהם לשיבוש תעבורה מפורטים במארח המקומי לפורטים במארח רחוק.

A dynamic tunnel is similar to a local tunnel in that it allows the local computer to connect to other resources through a remote host. A dynamic tunnel does this by simply specifying a single local port. Applications that wish to take advantage of this port for tunneling must be able to communicate using the SOCKS protocol so that the packets can be correctly redirected at the other side of the tunnel.

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

כדי להקים את החיבור, נעביר את הדגל -D יחד עם פורט המקומי שבו ברצוננו לגשת למנהרה. נשתמש גם בדגל -f, שגורם ל-SSH להיכנס לרקע לפני ביצוע ובדגל -N, שאינו פותח מפקד או מפעיל תוכנית בצד הרחוק.

לדוגמה, כדי להקים מנהרה על פורט 7777, ניתן להקליד:

  1. ssh -f -N -D 7777 username@remote_host

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

השיטה להפנות תעבורה לפתחת SOCKS תשתנה לפי היישום. לדוגמה, ב־Firefox, המיקום הכללי הוא העדפות > מתקדם > הגדרות > תצורת פרוקסי ידנית. ב־Chrome, תוכל להתחיל את היישום עם הדגל --proxy-server= מוגדר. תרצה להשתמש בממשק localhost ובפורט שהעברת.

מאחר והחיבור פועל ברקע, תצטרך למצוא את מזהה התהליך שלו כדי להורוג אותו. תוכל לעשות זאת על ידי חיפוש אחר הפורט שהעברת:

  1. ps aux | grep 8888
Output
1001 5965 0.0 0.0 48168 1136 ? Ss 12:28 0:00 ssh -f -N -D 7777 username@remote_host 1001 6113 0.0 0.0 13648 952 pts/2 S+ 12:37 0:00 grep --colour=auto 8888

תוכל להורוג את התהליך על ידי מטרת ה־PID, שהוא המספר בעמודה השנייה, של השורה התואמת את הפקודה שלך ב־SSH:

  1. kill 5965

אפשרות נוספת היא להתחיל את החיבור בלי הדגל -f. זה ישמור על החיבור ברקע, וימנע ממך להשתמש בחלון הטרמינל למשך זמן ההובלה. היתרון של כך הוא שתוכל להורוג בקלות את המנהרה על ידי הקלדת CTRL-C.

שימוש בקודי ירידה של SSH כדי לשלוט בחיבורים

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

לכפות התנתקות מצד הלקוח (כיצד לצאת מהפגיעה או מהקפאת הסשן)

אחת התכונות הכי שימושיות של OpenSSH שלרוב לא מתבחרות היא היכולת לשלוט באספקטים מסוימים של הסשן מתוך הסשן עצמו.

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

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

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

  1. [ENTER]
  2. ~.

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

מציבים חיבור SSH ברקע

אחת התכונות המועילות ביותר של OpenSSH שנדרשת בהתעלמות רבה היא היכולת לשלוט באספקטים מסוימים של החיבור מתוך החיבור עצמו.

פקודות אלו יכולות להתבצע לאחר כתיבת התו ~ מתוך חיבור SSH. פקודות בקרה יתווספו רק אם הן הן הדבר הראשון שנכתב אחרי שורת שורה חדשה, לכן תמיד לחצו על ENTER פעמיים לפני שתשתמשו באחת.

אחת היכולות שהמעניקה זאת היא לשים חיבור SSH ברקע. כדי לעשות זאת, עליכם לספק את התו בקרה (~) ולאחר מכן לבצע את הקיצור המקלדתי הרגיל לשים משימה ברקע (CTRL-z):

  1. [ENTER]
  2. ~[CTRL-z]

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

ניתן להפעיל מיד את המשימה האחרונה שהונחה ברקע על ידי הקלדה של:

  1. fg

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

  1. jobs
Output
[1]+ Stopped ssh username@some_host [2] Stopped ssh username@another_host

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

  1. fg %2

שינוי אפשרויות הפניה לפורט בחיבור SSH קיים

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

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

דבר שאפשרי עם זה הוא לשנות את תצורת ההפניה לפורט לאחר שהחיבור כבר הוצב. זה מאפשר לך ליצור או להשמיד כללים לפייביים על הדרך.

היכולות הללו הן חלק מממשק השורת פקודה של SSH, שניתן לגשת אליו במהלך הסשן באמצעות שימוש בתו השליטה (~) ובתו "C":

  1. [ENTER]
  2. ~C
ssh>

תקבל ערכת פקודות של SSH, שבה יש סט מוגבל מאוד של פקודות תקפות. כדי לראות את האפשרויות הזמינות, ניתן להקליד -h מהערכת הזו. אם אין תגובה, עשויה להיות צורך להגביר את רמת ההפרטה של פלט SSH שלך על ידי שימוש ב-~v מספר פעמים:

  1. [ENTER]
  2. ~v
  3. ~v
  4. ~v
  5. ~C
  6. -h
Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KL[bind_address:]port                 Cancel local forward
      -KR[bind_address:]port                 Cancel remote forward
      -KD[bind_address:]port                 Cancel dynamic forward

כפי שתוכל לראות, תוכל ליישם בקלות כל אחת מהאפשרויות להעברה באמצעות האפשרויות המתאימות (ראה את סעיף ההעברה למידע נוסף). תוכל גם להרוס טונל עם הפקודה "kill" המשויכת שנקבעת עם "K" לפני אות הסוג של ההעברה. לדוגמה, כדי להרוג העברה מקומית (-L), תוכל להשתמש בפקודת -KL. תצטרך לספק רק את היציאה עבור זה.

לכן, כדי להגדיר העברת יציאה מקומית, תוכל להקליד:

  1. [ENTER]
  2. ~C
  3. -L 8888:127.0.0.1:80

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

  1. [ENTER]
  2. ~C
  3. -KL 8888

מסקנה

ההוראות לעיל צריכות לכסות את רוב המידע שרוב המשתמשים יצטרכו בנושא SSH ביום-יום. אם יש לך טיפים נוספים או אתה רוצה לשתף את התצורות והשיטות המועדפות עליך, אל תהסס להשתמש בתגובות למטה.

Source:
https://www.digitalocean.com/community/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys