آموزش اتصال به SSH با PowerShell در ویندوز
اتصال به سرورهای لینوکس و ویندوزی از طریق SSH یکی از مهمترین مهارتهایی است که مدیران سرور، کارشناسان DevOps و متخصصان زیرساخت باید به آن مسلط باشند. در گذشته کاربران ویندوز معمولا برای اتصال SSH از نرمافزارهایی مانند PuTTY استفاده میکردند، اما امروزه PowerShell به همراه OpenSSH امکان برقراری اتصال SSH را بهصورت مستقیم در ویندوز فراهم کرده است.
با استفاده از PowerShell میتوانید بدون نصب ابزارهای جانبی به سرورهای لینوکس یا ویندوزی متصل شده، دستورات مدیریتی اجرا کرده و حتی از قابلیت PowerShell Remoting بر بستر SSH بهره ببرید. این قابلیت باعث میشود مدیریت سرورها در محیطهای چندسکویی بسیار سادهتر و حرفهایتر انجام شود.
در این آموزش نحوه اتصال به SSH با PowerShell در ویندوز را بهصورت کامل بررسی میکنیم و همچنین با روشهای پیشرفتهتر مانند اجرای دستورات از راه دور و PowerShell Remoting آشنا خواهیم شد.
SSH چیست و چرا در PowerShell اهمیت دارد؟
SSH یا Secure Shell یک پروتکل امن برای برقراری ارتباط با سیستمهای راه دور است. این پروتکل ارتباط میان کلاینت و سرور را رمزنگاری کرده و امنیت بالایی در انتقال دادهها فراهم میآورد.
در نسخههای جدید ویندوز، OpenSSH بهصورت رسمی توسط مایکروسافت پشتیبانی میشود و در کنار PowerShell امکان مدیریت سرورهای لینوکس و ویندوز را فراهم میکند. این موضوع باعث شده بسیاری از مدیران سیستم دیگر نیازی به استفاده از نرمافزارهای جانبی نداشته باشند.
پیشنیازهای اتصال SSH در ویندوز
قبل از اتصال به SSH با PowerShell باید چند مورد را بررسی کنید.
نصب OpenSSH Client
در ویندوز 10 نسخه 1809 به بعد و همچنین ویندوز سرور 2019 و نسخههای جدیدتر، OpenSSH بهصورت داخلی در سیستمعامل وجود دارد.
برای بررسی نصب بودن SSH دستور زیر را اجرا کنید:
اگر خروجی شامل راهنمای دستورات SSH بود، سرویس روی سیستم شما فعال است.
همچنین میتوانید مسیر فایل اجرایی را بررسی کنید:
در حالت عادی فایل در مسیر زیر قرار دارد:
در برخی موارد اگر PowerShell نتواند دستور ssh را شناسایی کند، مشکل مربوط به متغیر PATH یا نصب نبودن OpenSSH است. این موضوع توسط کاربران PowerShell هم گزارش شده است.
نحوه اتصال به سرور لینوکس با PowerShell
سادهترین روش اتصال به SSH استفاده از دستور ssh است.
ساختار کلی دستور به شکل زیر است:
برای مثال:
یا:
پس از اجرای دستور، رمز عبور کاربر درخواست میشود و در صورت صحیح بودن اطلاعات وارد محیط سرور خواهید شد.
نمونه:
سپس:
بعد از وارد کردن رمز عبور وارد محیط Shell سرور خواهید شد.
اتصال به SSH با پورت اختصاصی
بسیاری از مدیران سرور برای افزایش امنیت، پورت پیشفرض 22 را تغییر میدهند.
در این شرایط باید شماره پورت را مشخص کنید:
در این مثال اتصال از طریق پورت 4587 برقرار میشود.
اتصال با کلید SSH
استفاده از SSH Key یکی از بهترین روشهای افزایش امنیت سرور است.
در این روش بهجای وارد کردن رمز عبور از فایل کلید خصوصی استفاده میشود.
ساختار دستور:
نمونه واقعی:
در این حالت در صورت تنظیم صحیح کلیدها، ورود بدون رمز عبور انجام خواهد شد.
مایکروسافت نیز استفاده از احراز هویت مبتنی بر کلید را برای SSH Remoting پیشنهاد میکند.
اجرای دستور روی سرور بدون ورود به Shell
گاهی نیاز دارید فقط یک دستور روی سرور اجرا شود.
برای این کار میتوانید دستور را در انتهای فرمان SSH قرار دهید:
یا:
خروجی مستقیم در پنجره PowerShell نمایش داده میشود و پس از پایان اجرا اتصال بسته خواهد شد.
این روش برای اسکریپتهای مانیتورینگ و اتوماسیون بسیار کاربردی است.
PowerShell Remoting بر بستر SSH چیست؟
PowerShell Remoting قابلیتی است که امکان اجرای دستورات PowerShell روی سیستمهای راه دور را فراهم میکند.
در نسخههای جدید PowerShell میتوان بهجای WinRM از SSH برای برقراری ارتباط استفاده کرد. این ویژگی بهخصوص در محیطهایی که شامل سرورهای لینوکس و ویندوزی هستند بسیار مفید است.
مزیت اصلی این روش آن است که ارتباط از طریق پروتکل استاندارد SSH انجام میشود و محدود به ویندوز نیست.
نصب PowerShell 7 برای SSH Remoting
برای استفاده از قابلیت Remoting بر بستر SSH باید PowerShell 7 یا نسخههای جدیدتر روی سیستم نصب باشد.
برای بررسی نسخه:
خروجی باید نسخه 7 یا بالاتر را نمایش دهد.
ایجاد PSSession از طریق SSH
یکی از قابلیتهای حرفهای PowerShell ایجاد نشست راه دور است.
برای ایجاد Session از دستور زیر استفاده میشود:
نمونه:
در صورت موفقیت یک نشست PowerShell روی سرور مقصد ایجاد خواهد شد.
ورود به نشست PowerShell راه دور
پس از ایجاد Session میتوانید وارد آن شوید:
اکنون تمام دستورات PowerShell روی سیستم مقصد اجرا میشوند.
برای خروج:
اجرای دستورات از راه دور با Invoke-Command
یکی از کاربردیترین قابلیتهای PowerShell اجرای مستقیم دستورات روی سیستم مقصد است.
مثال:
یا:
این روش برای مدیریت همزمان چندین سرور بسیار مفید است.
فعالسازی SSH Server در ویندوز
اگر قصد دارید به یک سرور ویندوزی از طریق SSH متصل شوید باید OpenSSH Server نصب و فعال باشد.
برای نصب:
سپس سرویس را فعال کنید:
فعالسازی اجرای خودکار سرویس:
مایکروسافت نصب OpenSSH Server را برای استفاده از SSH Remoting الزامی میداند.
اگر به منابع اختصاصی، دسترسی کامل و امکان انتخاب سیستمعامل نیاز دارید، خرید سرور مجازی را بررسی کنید.
خطاهای رایج هنگام اتصال SSH در PowerShell
خطای ssh is not recognized
نمونه خطا:
این مشکل معمولا به یکی از دلایل زیر رخ میدهد:
- OpenSSH Client نصب نشده است
- مسیر OpenSSH در PATH قرار ندارد
- PowerShell به فایل ssh.exe دسترسی ندارد
این خطا توسط برخی کاربران PowerShell گزارش شده است.
خطای Connection Refused
این خطا معمولا به دلایل زیر ایجاد میشود:
- سرویس SSH روی سرور فعال نیست
- فایروال پورت 22 را مسدود کرده است
- IP یا پورت اشتباه وارد شده است
خطای Permission Denied
این خطا معمولا مربوط به موارد زیر است:
- رمز عبور اشتباه
- سطح دسترسی ناکافی
- تنظیم نبودن کلیدهای SSH
خطای SSH Transport Process Terminated
این خطا بیشتر هنگام استفاده از PowerShell Remoting دیده میشود و معمولا ناشی از پیکربندی نادرست PowerShell Subsystem در فایل sshd_config است.
تفاوت SSH معمولی و PowerShell Remoting بر بستر SSH
بسیاری از کاربران تصور میکنند این دو قابلیت یکسان هستند، در حالی که تفاوت مهمی دارند.
در SSH معمولی شما فقط به Shell سیستم مقصد متصل میشوید و دستورات را بهصورت متنی اجرا میکنید.
اما در PowerShell Remoting بر بستر SSH، دادهها بهصورت آبجکتهای PowerShell منتقل شده و امکان مدیریت حرفهایتر سیستمها فراهم میگردد.
این موضوع اجرای اسکریپتهای پیچیده و مدیریت چندین سرور را سادهتر میکند.
جمعبندی
PowerShell امروزه یکی از قدرتمندترین ابزارهای مدیریت سرور در ویندوز محسوب میشود و پشتیبانی داخلی از SSH باعث شده اتصال به سرورهای لینوکسی و ویندوزی بسیار سادهتر از گذشته باشد.
اگر فقط قصد ورود به سرور را دارید، دستور ssh کاملا کافی است. اما اگر به دنبال مدیریت حرفهای، اتوماسیون و اجرای دستورات پیشرفته روی چندین سرور هستید، استفاده از PowerShell Remoting بر بستر SSH انتخاب بسیار بهتری خواهد بود.
ترکیب PowerShell 7 و OpenSSH یک راهکار مدرن، امن و چندسکویی برای مدیریت زیرساختهای امروزی فراهم میکند که هم در محیطهای ویندوزی و هم لینوکسی کاربرد گستردهای دارد.