لینوکس

آموزش اتصال SSH به سرور لینوکس با CMD ویندوز + رفع خطاهای رایج

راهنمای کاربردی اتصال امن به سرور لینوکسی با SSH، پورت سفارشی و کلید خصوصی؛ همراه با اجرای دستور از راه دور و رفع خطاهای متداول.

آموزش اتصال SSH به سرور لینوکس با CMD ویندوز + رفع خطاهای رایج
سعید قربانی
سعید قربانی
مدیر و نویسنده نتزو
16 دقیقه • ۸ آبان ۱۴۰۵• ۴۱

آموزش اتصال 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 و مشخصات سرور صحیح است، عبارت زیر را وارد کنید:

yes

Host 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 2222

Private 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 حذف کنید.

سعید قربانی
سعید قربانی
مدیر و نویسنده نتزو

در حوزه فناوری، زیرساخت ابری و سرویس‌های دیجیتال فعالیت می‌کنم و تجربه‌ام بیشتر بر راه‌اندازی و توسعه کسب‌وکارهای آنلاین متمرکز است. در وبلاگ نتزو نیز تلاش می‌کنم آموخته‌ها و تجربیاتم در زمینه سرور، لینوکس و فناوری‌های مرتبط را به شکلی کاربردی به اشتراک بگذارم.

مشاهده تمام مقالات این نویسنده

مقالات مرتبط و پیشنهادی