עבור לתוכן
Alex Kovalev

מדריך בסיסי ל-SSH

המטרה של המדריך הזה היא להכיר לכם את ה-`ssh cli` דרך דוגמאות בסיסיות שמכסות 80% מהצורך.

3דקות קריאה

המטרה של המדריך הזה היא להכיר לכם את ה-ssh cli דרך דוגמאות בסיסיות שמכסות 80% מהצורך.

מה זה בכלל SSH?

SSH ראשי תיבות של (S)ecure (SH)ell. זה פרוטוקול, קבוצת כללים לתקשורת בין מחשבים, שנבנה במיוחד בשביל גישה ל-shell. באמצעותו אתם יכולים להתחבר בבטחה למכונה מרוחקת ולהריץ פקודות shell כמו ls -la.

בדיוק כמו כל פרוטוקול אחר, בלוטות’, טורנט, tcp/ip - הוא חסר תועלת בפני עצמו, ודורש לקוח (תוכנה) אמיתי שמממש את הפרוטוקול. אז בדיוק כמו שאתם משתמשים ב-qbittorrent כדי לממש את פרוטוקול הטורנט, אתם משתמשים ב-openssh כדי לממש ssh. יש כיום לקוחות בממשק גרפי כמו cyberduck, filezilla ורבים נוספים, אבל לכל עבודה רצינית תמצאו את עצמכם חוזרים ל-openssh. בואו נתקין אותו.

התקנת לקוח SSH

קחו את מנהל החבילות האהוב עליכם והריצו את פקודת ההתקנה

Terminal window
# Ubuntu/Debian
sudo apt install openssh-client
# macOS (אם חסר)
brew install openssh
# Windows (בחרו אחת)
winget install OpenSSH
choco install openssh

מזל טוב! השלב הראשון הושלם. הריצו ssh בטרמינל כדי לראות פקודות זמינות, ו-man ssh כדי לקרוא את המדריך.

יצירת מפתח ה-SSH הראשון שלכם

השלב הבא הוא להגדיר את הסיסמה שלכם, ובכן, “מפתח” ליתר דיוק.

SSH משתמש בזוג מפתחות שנקראים:

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

הריצו את הפקודה כדי ליצור את שניהם:

Terminal window
# האימייל הוא רק לצורך זיהוי
ssh-keygen -t ed25519 -C "your-email@example.com"

ssh-keygen מגיע יחד עם ה-cli של openssh אז אין צורך להתקין שום דבר נוסף

-t מציין את סוג ההצפנה

-C מוסיף הערה, בדרך כלל האימייל שלכם, כדי שתוכלו להבדיל בין המפתחות שלכם בהמשך

אתם יכולים להגדיר את המשתנים האלה ידנית ופשוט להריץ ssh-keygen

איך עובד האמון ב-ssh?

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

לחיצת היד נראית ככה:

  1. לקוח ה-ssh שלכם מבקש מהשרת להתחבר.
  2. השרת מגיב עם “אתגר” ומבקש מכם לחתום על נתונים מסוימים.
  3. הלקוח שלכם חותם עליהם עם המפתח הפרטי ושולח את התשובה בחזרה.
  4. השרת מוודא את התשובה מול המפתח הציבורי.
הלפטופ שלכםid_ed25519
שרתid_ed25519.pub(ריק)
  1. הלפטופ דופק בדלת
  2. השרת שולח אתגר אקראי
  3. המפתח הפרטי חותם עליו
  4. המפתח הציבורי בודק את החתימה
$ ssh user@server
שרת: תחתום על זה ← 7c2e91af
לפטופ: חתמתי ← 3b0f6d2a
שרת: תואם ל-id_ed25519.pub
Welcome to Ubuntu 24.04 LTS
רק החתימה עוברת ברשת. המפתח הפרטי נשאר בבית.

שימו לב שזה דורש מהשרת שלכם להחזיק את המפתח הציבורי שלכם! בואו ניתן לו אחד.

התחברות למכונה מרוחקת

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

  • כתובת ה-IP של השרת שלכם
  • שם המשתמש
  • הסיסמה

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

Terminal window
ssh-copy-id username@server-ip
# מגיע יחד עם לקוח open-ssh

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

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

אתם יכולים לפשט את זה עוד יותר באמצעות alias, עוד על זה כאן

לעשות את זה ידנית

הריצו את הפקודות הבאות בסדר

Terminal window
# העתיקו את תוכן המפתח הציבורי
cat ~/.ssh/id_ed25519.pub # הריצו את זה כדי לראות את המפתח הציבורי על המכונה שלכם
# התחברו לשרת באמצעות הסיסמה שלכם
ssh username@server-ip
mkdir -p ~/.ssh # בדיוק כמו במחשב שלכם, השרת צריך תיקיית .ssh
echo "paste-public-key-here" >> ~/.ssh/authorized_keys # זה ייצור קובץ authorized_keys עם המפתח שלכם בפנים
chmod 600 ~/.ssh/authorized_keys # שנו הרשאות כדי שהשרת יוכל לגשת לקובץ
chmod 700 ~/.ssh # שנו הרשאות כדי שהשרת יוכל לגשת לתיקייה

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

שינוי הביטוי הסודי של המפתח שלכם

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

Terminal window
# מפתח ברירת המחדל
ssh-keygen -p
# מפתח ספציפי
ssh-keygen -p -f ~/.ssh/custom_key_name

Alias ל-SSH

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

Terminal window
vim ~/.ssh/config

הגדירו את המארח (host):

Terminal window
# alias פשוט
Host myserver
HostName 192.168.1.100
User john

אחרי זה תוכלו פשוט להריץ:

Terminal window
ssh myserver

ולהתחבר מיידית!

ראו גם: העברת חשבון cPanel משורת הפקודה ותעודת SSL חינמית עם Certbot, שני דברים שתעשו ברגע שתהיו בפנים.

תגובות

התגובות נשמרות ב-GitHub Discussions (דרך giscus), אז כדי להצטרף לשיחה צריך חשבון GitHub.

אצייץ לך כשיעלה פוסט חדש

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

מעדיפים קורא RSS? יש פיד RSS.

© Alex Kovalev. כל הזכויות שמורות. · מדיניות פרטיות