آموزش اتصال SSH به سرور لینوکس با CMD ویندوز + پورت و رفع خطاها
برای مدیریت سرور لینوکسی، یکی از اولین چیزهایی که باید یاد بگیرید اتصال از طریق SSH است. با SSH میتوانید مستقیماً از کامپیوتر ویندوزی خود به سرور متصل شوید و آن را از طریق خط فرمان مدیریت کنید.
در نسخههای جدید ویندوز معمولاً نیازی به نصب نرمافزار جداگانه ندارید و میتوانید اتصال SSH را مستقیماً از CMD انجام دهید.
در این آموزش نحوه اتصال SSH با CMD ویندوز، اتصال با پورت سفارشی و Private Key و همچنین رفع خطاهای رایج SSH را بررسی میکنیم.
برای اتصال SSH چه اطلاعاتی لازم است؟
قبل از شروع باید اطلاعات اتصال سرور را در اختیار داشته باشید:
آدرس IP سرور
نام کاربری
رمز عبور یا Private Key
پورت SSH
پورت پیشفرض SSH عدد 22 است، اما ممکن است روی سرور شما پورت دیگری تنظیم شده باشد.
این اطلاعات معمولاً هنگام تحویل سرور توسط شرکت هاستینگ در اختیار شما قرار میگیرد.
اتصال SSH به سرور با CMD ویندوز
ابتدا CMD را باز کنید.
کلیدهای Win + R را بزنید، عبارت زیر را وارد کنید:
cmdو Enter بزنید.
حالا دستور SSH را به شکل زیر اجرا کنید:
ssh username@server_ipبرای مثال:
ssh root@192.168.1.10در این دستور:
rootنام کاربری سرور است.192.168.1.10آدرس IP سرور است.
اگر دستور ssh روی سیستم شما شناخته نشد، میتوانید با دستور زیر بررسی کنید OpenSSH روی ویندوز فعال است یا خیر:
ssh -Vاگر نسخه OpenSSH نمایش داده شود، ابزار SSH روی ویندوز شما فعال است.
تأیید Host Key در اولین اتصال
اگر برای اولین بار به سرور متصل شوید، احتمالاً پیامی شبیه این مشاهده میکنید:
Are you sure you want to continue connecting (yes/no/[fingerprint])?SSH در این مرحله میخواهد Host Key سرور را تأیید کنید.
اگر مطمئن هستید IP و مشخصات سرور صحیح است، عبارت زیر را وارد کنید:
yesHost Key سرور روی سیستم شما ذخیره میشود و معمولاً در اتصالهای بعدی این سؤال دوباره نمایش داده نمیشود.
چرا هنگام وارد کردن رمز SSH چیزی نمایش داده نمیشود؟
بعد از برقراری اتصال، SSH رمز عبور را درخواست میکند.
هنگام تایپ Password در CMD:
هیچ کاراکتری نمایش داده نمیشود.
علامت ستاره
*نیز ظاهر نمیشود.حتی تعداد کاراکترهای واردشده قابل مشاهده نیست.
این رفتار طبیعی است.
رمز عبور را بهصورت عادی تایپ کنید و Enter بزنید.
اگر اطلاعات ورود صحیح باشد، اتصال SSH برقرار میشود.
اتصال SSH با پورت سفارشی
SSH بهصورت پیشفرض از پورت 22 استفاده میکند.
بنابراین دستور:
ssh root@192.168.1.10در واقع تلاش میکند به پورت 22 سرور متصل شود.
اگر پورت SSH سرور تغییر کرده باشد، باید آن را با گزینه -p مشخص کنید:
ssh root@192.168.1.10 -p 2222فرم کلی دستور:
ssh username@server_ip -p portبرای مثال اگر پورت SSH سرور شما 2022 باشد:
ssh root@192.168.1.10 -p 2022اتصال SSH با Private Key در ویندوز
بعضی سرورها به جای رمز عبور از SSH Key برای ورود استفاده میکنند.
در این حالت باید مسیر Private Key را با گزینه -i مشخص کنید.
برای مثال:
ssh -i "%USERPROFILE%\.ssh\id_ed25519" root@192.168.1.10اگر سرور پورت سفارشی داشته باشد:
ssh -i "%USERPROFILE%\.ssh\id_ed25519" root@192.168.1.10 -p 2222Private Key را نباید در اختیار افراد دیگر قرار دهید، زیرا این فایل برای احراز هویت شما در سرور استفاده میشود.
رفع خطاهای رایج SSH در CMD ویندوز
اگر اتصال SSH برقرار نشود، معمولاً متن خطا مشخص میکند مشکل در کدام مرحله قرار دارد.
خطای Permission denied
ممکن است با خطایی شبیه این مواجه شوید:
Permission deniedیا:
Permission denied (publickey)این خطا معمولاً یعنی ارتباط با سرور برقرار شده، اما احراز هویت شما موفق نبوده است.
موارد زیر را بررسی کنید:
نام کاربری صحیح است؟
رمز عبور درست وارد شده؟
Private Key صحیح است؟
Public Key مربوط به آن روی سرور ثبت شده؟
سرور اجازه ورود با Password را میدهد؟
گاهی مشکل فقط نام کاربری اشتباه است. برای مثال بعضی سرورها به جای root از کاربری مثل ubuntu استفاده میکنند:
ssh ubuntu@192.168.1.10خطای Connection refused
نمونه خطا:
ssh: connect to host 192.168.1.10 port 22: Connection refusedاین خطا معمولاً نشان میدهد روی پورتی که به آن متصل شدهاید سرویس SSH در دسترس نیست.
موارد زیر را بررسی کنید:
شماره پورت SSH درست است؟
سرویس SSH روی سرور فعال است؟
فایروال سرور اجازه اتصال به این پورت را میدهد؟
اگر SSH روی پورت دیگری قرار دارد، شماره آن را مشخص کنید:
ssh root@192.168.1.10 -p 2222خطای Connection timed out
نمونه:
ssh: connect to host 192.168.1.10 port 22: Connection timed outاین خطا بیشتر به شبکه یا فایروال مربوط است.
دلایل رایج آن عبارتاند از:
IP سرور اشتباه است.
سرور در دسترس نیست.
پورت SSH بسته است.
Cloud Firewall یا Security Group اتصال را مسدود کرده است.
SSH فقط برای IPهای مشخصی باز شده است.
خطای WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
گاهی هنگام اتصال با این هشدار مواجه میشوید:
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!ممکن است در ادامه پیام به احتمال حمله Man-in-the-Middle نیز اشاره شود.
این خطا زمانی نمایش داده میشود که Host Key فعلی سرور با کلیدی که قبلاً روی کامپیوتر شما ذخیره شده متفاوت باشد.
یکی از دلایل رایج و طبیعی آن، نصب مجدد سیستمعامل سرور است.
با این حال، چون تغییر Host Key میتواند نشانه یک مشکل امنیتی نیز باشد، نباید بدون بررسی کلید قبلی را حذف کنید.
ابتدا مطمئن شوید تغییر Host Key مورد انتظار است؛ برای مثال خودتان سیستمعامل سرور را Reinstall کردهاید.
اگر از هویت سرور مطمئن هستید، در CMD این دستور را اجرا کنید:
ssh-keygen -R 192.168.1.10به جای IP بالا، IP یا Hostname سرور خودتان را وارد کنید.
سپس دوباره متصل شوید:
ssh root@192.168.1.10در اتصال جدید، SSH دوباره Host Key سرور را نمایش میدهد و میتوانید آن را تأیید کنید.
اگر SSH روی پورت سفارشی باشد، میتوانید رکورد مربوط به همان Host و Port را حذف کنید:
ssh-keygen -R "[192.168.1.10]:2222"خطای UNPROTECTED PRIVATE KEY FILE
اگر هنگام اتصال با Private Key، SSH دسترسی فایل را ناامن تشخیص دهد، ممکن است کلید را قبول نکند.
در ویندوز میتوانید Permission فایل را با icacls محدود کنید.
برای مثال:
icacls "%USERPROFILE%\.ssh\id_ed25519" /inheritance:rسپس دسترسی کاربر فعلی را روی فایل قرار دهید:
icacls "%USERPROFILE%\.ssh\id_ed25519" /grant:r "%USERNAME%:R"بعد دوباره اتصال را امتحان کنید:
ssh -i "%USERPROFILE%\.ssh\id_ed25519" root@192.168.1.10تغییر پورت SSH سرور
اگر خودتان مدیر سرور هستید و میخواهید پورت SSH را تغییر دهید، این تنظیم در فایل زیر انجام میشود:
/etc/ssh/sshd_configبرای مثال:
Port 2222بعد از تغییر تنظیمات باید پورت جدید را در فایروال باز کرده و سرویس SSH را Restart کنید.
قبل از بستن اتصال فعلی حتماً در یک پنجره جدید اتصال با پورت جدید را آزمایش کنید.
برای مثال:
ssh root@192.168.1.10 -p 2222در غیر این صورت ممکن است به دلیل اشتباه در تنظیم پورت یا فایروال، دسترسی SSH خودتان را از دست بدهید.
سوالات متداول
دستور اتصال SSH در CMD چیست؟
در حالت عادی:
ssh username@server_ipبرای مثال:
ssh root@192.168.1.10چگونه پورت SSH را در CMD مشخص کنیم؟
از گزینه -p استفاده کنید:
ssh root@192.168.1.10 -p 2222چرا رمز SSH هنگام تایپ نمایش داده نمیشود؟
این رفتار طبیعی SSH است. رمز را تایپ کنید و Enter بزنید؛ حتی اگر هیچ کاراکتری روی صفحه دیده نمیشود.
خطای Man-in-the-Middle در SSH را چطور برطرف کنیم؟
اگر پیام REMOTE HOST IDENTIFICATION HAS CHANGED نمایش داده شده، ابتدا مطمئن شوید Host Key سرور واقعاً به دلیل معتبری تغییر کرده است.
بعد میتوانید کلید قبلی را از ویندوز حذف کنید:
ssh-keygen -R server_ipبرای مثال:
ssh-keygen -R 192.168.1.10سپس مجدداً به سرور متصل شوید.
Connection refused با Connection timed out چه تفاوتی دارد؟
Connection refused معمولاً یعنی به سرور رسیدهاید اما روی پورت موردنظر سرویس SSH در دسترس نیست.
Connection timed out بیشتر نشاندهنده مشکل شبکه، فایروال یا در دسترس نبودن سرور است.
جمعبندی
برای اتصال SSH به سرور لینوکسی از CMD ویندوز، در سادهترین حالت کافی است IP و نام کاربری سرور را داشته باشید:
ssh username@server_ipاگر SSH روی پورت دیگری اجرا میشود:
ssh username@server_ip -p portو اگر احراز هویت با Private Key انجام میشود:
ssh -i "path_to_private_key" username@server_ipاگر اتصال برقرار نشد، متن خطا بهترین راهنما برای پیدا کردن مشکل است. خطای Permission denied معمولاً به اطلاعات ورود مربوط میشود، Connection refused بیشتر به پورت یا سرویس SSH و Connection timed out به شبکه یا فایروال مربوط است.
همچنین اگر با هشدار تغییر Host Key یا Man-in-the-Middle مواجه شدید، آن را بدون بررسی نادیده نگیرید. ابتدا هویت سرور را تأیید کنید و فقط در صورت اطمینان، کلید قبلی را با ssh-keygen -R حذف کنید.




