אחת פעם, היית מוגבל בסוגי המחשבים שאליהם היית יכול להתחבר באמצעות Windows PowerShell באמצעות התחברות PowerShell Remoting. מאחר ש- PowerShell Remoting תמך רק ב- ספק WsMan, הסיכויים שלך להתחבר למחשבים הפועלים ב-Linux, לדוגמה, היו אפסיים. אך בשנת 2015, מיקרוסופט הציעה תמיכה ב-SSH ב- Windows והביאה לפני יתרונות רבים ולבסוף הרשת לך להשתמש ב-SSH ו-PowerShell יחד.
במאמר זה, אנו הולכים להתעמק ולראות איך להגדיר את לקוח ה-SSH של Windows וכיצד תוכל להשתמש ב-SSH וב-PowerShell Remoting ביחד.
פוסט זה על SSH ו-PowerShell הוא חלק מסדרת הבלוגים #PS7Now. הקפידו לבדוק את כל התורמים האחרים בסדרה זו בתחתית פוסט זה.
לפני שתתחיל
מאמר זה יהיה מדריך שלב אחר שלב. אם אתה מתכוון למשוך, הקפד לוודא שאתה עומד בדרישות הבאות:
- Windows 10 – כל הדוגמאות ישתמשו ב- Windows 10 Build 1903. הדוגמה תהיה באותו דומיין כמו שרת Windows רחוק.
- PowerShell v6+ מותקן על Windows 10 – כל הדוגמאות ישתמשו ב- PowerShell 7 RC2.
- A remote SSH server – All examples will use a Windows Server SSH machine. If you’re connecting to a Linux machine, you can skip the server setup steps.
- יש לוודא כי יש TCP פורט 22 זמין על השרת הרחוק
הגדרת קונסולת SSH (Windows 10)
לפני שתפתח קונסולת PowerShell, תצטרך לבצע מספר משימות חד פעמיות כדי לאפשר חיבור בין SSH ו-PowerShell כך ש-Windows 10 יכול להתחבר לשרת SSH רחוק
הוסף את תיקיית OpenSSH למשתנה הסביבה PATH
OpenSSH מותקן מראש על Windows 10 אך לפעמים יש צורך בעזרה קטנה כדי שיעבוד עם PowerShell Remoting. אם כבר ניסית להשתמש ב-Enter-PSSession
, לדוגמא, כדי להתחבר למערכת SSH רחוקה ונתקלת בשגיאה שמופיעה למטה, עליך לוודא שהנתיב לביצוע התוכנית הניתנת להרצאה (ssh.exe) כלול במשתנה הסביבה PATH environment variable.
כדי להוסיף את נתיב התיקייה של OpenSSH למשתנה הסביבה PATH, לחץ על כפתור התחל וחפש הגדרות מערכת מתקדמות, ואז לחץ על הצג הגדרות מערכת מתקדמות כפי שמוצג למטה.

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

בחלון משתנים סביבתיים, תחת משתנים מערכתיים, בחר ב־Path ולחץ על ערוך.

בחלון ערוך משתנה סביבתי, לחץ על חדש ואז הזן את הנתיב שבו נמצא הקובץ הנפתח ssh.exe. למדריך זה, הנתיב הוא C:\Program Files\OpenSSH כפי שמוצג למטה. לאחר הזנה, לחץ על אישור פעמיים כדי לשמור את הערך החדש.

ציין את התת־מערכת של SSH
כעת עליך לציין את התת־מערכת של SSH שבה PowerShell יקרא כאשר מתחברים דרך SSH לשרת Windows מרוחק. אם לא תספק לפוורשל איזו תת־מערכת להשתמש, בהכרח תקבל את השגיאה הבאה:
Enter-PSSession : The background process reported an error with the following message: The SSH client session has ended with error message: subsystem request failed on channel 0.
שים לב כי אם אינך מתחבר למכונת שרת Windows, לא תצטרך לבצע את השלבים הללו.
בשרת Windows מרוחק, פתח את הקובץ C:\ProgramData\ssh\ssh_config. גלול למטה לקטע override default of no subsystems שבקובץ ssh_config. הקטע ייראה כמו בצילום המסך למטה.

מתחת לשורת Subsystem הקיימת, הוסף את תת־המערכת של PowerShell באמצעות השורה הבאה:
עכשיו שמור את קובץ ssh_config ואחרי כך הפעל מחדש את שירות ה-sshd בשרת Windows מרוחק כפי שמוצג למטה.
לאחר האתחול מחדש של השירות, אתה כעת יכול להתחבר דרך SSH ו-PowerShell.
התחברות דרך PowerShell ו־SSH
עכשיו שהתקנת את התצורה, נסה לבדוק את PowerShell Remoting.
ראשית, נסה להיכנס לסשן אינטראקטיבי באמצעות הפקודה Enter-PSSession
. למערכות שאתה יכול להיות רגיל להם, אל תשתמש בפרמטר ComputerName
. במקום זאת, השתמש בפרמטר HostName
כדי לציין את המחשב המרוחק.
בברירת מחדל, PowerShell Remoting עדיין משתמש ב-WsMan. כדי לדרוס את ברירת המחדל, השתמש בפרמטר SSHTransport
כדי לציין שאתה רוצה להתחבר דרך SSH ו-PowerShell.
כשאתה מנסה להתחבר לראשונה עם שם משתמש וסיסמה, יהיה עליך ליצור מפתח פרטי של SSH. כאשר אתה מתבקש, הקלד 'y' לקבלת אישור.

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

כעת צא מההפעלה עם exit
ונסה New-PSSession
. שים לב שבשימוש באותם פרמטרי HostName
ו־SSHTransport
כמו קודם, ה־Transport
כעת מופיע כ־SSH
.
עדיין ניתן גם להשתמש ב־WsMan כפרוטוקול התחברות בעזרת פרמטר ה־ComputerName
בלי להשתמש בפרמטר ה־SSHTransport
.
אין חובה להשתמש בשם משתמש וסיסמה עבור SSH. במקום זאת, ניתן להשתמש ב־קובץ מפתח פרטי ולהשתמש בפרמטר
KeyFilePath
כדי לספק את המיקום.

אל תשכח לנקות את ההפעלות הפתוחות שלך עם Get-PSSession | Remove-PSSession
!
סיכום
עכשיו אתה צריך לדעת כיצד להגדיר גם את Windows 10 וגם את שרת Windows להשתמש ב־SSH עם פעילות רחוקה של PowerShell. לאחר הגדרה, ההבדל היחיד בין השימוש ב־WsMan כפרוטוקול התחברות ובשימוש ב־SSH הוא כמה פרמטרים!
אם ברצונך ללמוד עוד על PowerShell ו-SSH, הקפד לבדוק את פיקודי PowerShell Remoting דרך SSH מאמר התיעוד של Microsoft.
#תורמים_PS7Now
פוסט זה היה חלק מסדרת פוסטים על PowerShell 7 של תורמים מעולים שתראה למטה. הקפד לבדוק את הפוסטים שלהם ולראות מה הם עושים בבלוגים שלהם!
Author | Blog | |
---|---|---|
Josh King | @WindosNZ | https://toastit.dev/ |
Adam Bertram | @adbertram | https://adamtheautomator.com/ |
Jonathan Medd | @jonathanmedd | |
Thomas Lee | @doctordns | https://tfl09.blogspot.com/ |
Prateek Singh | @singhprateik | https://ridicurious.com |
Dave Carroll | @thedavecarroll | https://powershell.anovelidea.org/ |
Dan Franciscus | @dan_franciscus | https://winsysblog.com/ |
Jeff Hicks | @jeffhicks | https://jdhitsolutions.com |
Josh Duffney | @joshduffney | http://duffney.io/ |
Mike Kanakos | @MikeKanakos | https://www.networkadm.in/ |
Tommy Maynard | @thetommymaynard | https://tommymaynard.com// |