راهنمای جامع دسترسی به لینوکس از طریق SSH سرور مجازی و سرور اختصاصی

 

پروتکل SSH چیست و چرا حیاتی است؟

 

اگر به تازگی یک سرور مجازی (VPS) یا سرور اختصاصی لینوکسی خریداری کرده‌اید، احتمالا با واژه SSH برخورد کرده‌اید. اما این عبارت دقیقا به چه معناست؟

پروتکل SSH (مخفف Secure Shell) را می‌توان مانند یک تونل نامرئی و بسیار ایمن تصور کرد. این تونل کامپیوتر خانگی یا کاری شما را به سرور قدرتمندتان در دیتاسنتر متصل می‌کند.

در گذشته، مدیران شبکه از پروتکل‌هایی مانند Telnet استفاده می‌کردند که امنیت پایینی داشتند. در Telnet، اطلاعات به صورت متن ساده رد و بدل می‌شد و هر کسی در مسیر می‌توانست رمز عبور شما را ببیند. اما SSH تمام اطلاعات را رمزنگاری (Encrypt) می‌کند.

بنابراین، یادگیری SSH فقط یک مهارت فنی نیست؛ بلکه اولین و مهم‌ترین قدم برای مدیریت امن سرورهای لینوکسی است. چه یک دانشجو باشید و چه یک مدیر سیستم حرفه‌ای، این مقاله مسیر شما را روشن خواهد کرد.

 

پیش‌نیازهای فنی برای شروع کار

 

قبل از اینکه دست به کار شوید و دستورات را تایپ کنید، باید چند تکه از پازل را در اختیار داشته باشید. بدون این اطلاعات، اتصال به سرور ممکن نیست. معمولاً پس از خرید سرور از شرکت‌های هاستینگ (مانند IRPOWER)، ایمیلی حاوی اطلاعات زیر برای شما ارسال می‌شود:

 

آی‌پی سرور (IP Address): شناسه منحصر‌به‌فرد سرور شما در اینترنت (مثلاً ۱۹۲.۱۶۸.۱.۵۰).

نام کاربری (Username): در سرورهای لینوکس، مدیر اصلی معمولاً نام کاربری root را دارد.

رمز عبور (Password): یک رشته متنی پیچیده برای احراز هویت.

شماره پورت (Port): پورت پیش‌فرض SSH عدد ۲۲ است (مگر اینکه به دلایل امنیتی تغییر داده شده باشد).

 

ابزارهای مورد نیاز برای اتصال به SSH

 

بسته به اینکه سیستم‌عامل کامپیوتر شما چیست (ویندوز، مک یا لینوکس)، روش اتصال کمی متفاوت است. در اینجا محبوب‌ترین روش‌ها را بررسی می‌کنیم.

 

۱. کاربران ویندوز (Windows)

کاربران ویندوز دو راه اصلی دارند: استفاده از نرم‌افزار محبوب PuTTY یا استفاده از خط فرمان‌های جدید ویندوز (PowerShell / CMD).

 

روش اول: استفاده از نرم‌افزار PuTTY (رابط گرافیکی)

 

پاتی (PuTTY) یک نرم‌افزار ویندوزی و لایه باز (Open Source) ارتباطی SSH Client، قدیمی و بسیار محبوب است. بسیاری از کاربران حرفه‌ای هنوز هم به دلیل سادگی و پایداری، این ابزار را ترجیح می‌دهند.

آموزش اتصال به سرور لینوکس با PuTTY

 

مراحل اتصال با PuTTY:

 

نرم افزار PuTTY‌ را می توانید از طریق وب سایت رسمی آن (دانلود PuTTY) و یا از طریق لینک مستقیم ما (دانلود مستقیم PuTTY) دانلود و نصب کنید.

از لیست برنامه های نصب شده، بر روی برنامه Pageant کلیک فرمایید تا باز شود و در کنار ساعت ویندوز قرار گیرد. با کلیک راست بر روی این برنامه، بر روی گزینه New Session کلیک کنید.

آموزش دسترسی به سرورهای لینوکس از طریق SSH

در کادر Host Name (or IP address)، آدرس IP سرور خود را وارد کنید.

مطمئن شوید که پورت روی ۲۲ تنظیم شده است و نوع اتصال (Connection type) روی SSH باشد.

روی دکمه Open در پایین پنجره کلیک کنید.

نکته: شما می‌توانید با وارد کردن یک نام دلخواه مانند My Server در قسمت «Saved Sessions» و انتخاب گزینه «Save» این سرور را در لیست خود ذخیره کنید تا از این پس بدون نیاز به وارد کردن IP و سایر مشخصات و تنها با انتخاب نام سرور خود به آن دسترسی داشته باشید.

آموزش دسترسی به سرورهای لینوکس از طریق SSH

در صورتی که مشخصات وارد شده مثل آدرس آیپی، پورت و نوع کانکشن صحیح باشد، صفحه ای باز خواهد شد که در آن از شما نام کاربر (مانند root) و رمز عبور از شما دریافت خواهد شد که در صورتی که این اطلاعات نیز صحیح باشد، در نهایت وارد محیط ترمینال سرور از طریق SSH خواهید شد.

آموزش دسترسی به سرورهای لینوکس از طریق SSH

 

نکته امنیتی مهم: اولین باری که به یک سرور جدید متصل می‌شوید، پنجره‌ای هشداری با عنوان Security Alert ظاهر می‌شود. این پیام می‌گوید: “من این سرور را نمی‌شناسم، آیا به اثر انگشت (Fingerprint) آن اعتماد دارید؟”. نگران نباشید؛ روی Accept یا Yes کلیک کنید تا کلید سرور در سیستم شما ذخیره شود.

 

روش دوم: استفاده از Command Prompt یا PowerShell (بدون نصب نرم‌افزار)

 

در نسخه‌های جدید ویندوز ۱۰ و ۱۱، کلاینت OpenSSH به صورت پیش‌فرض نصب است. این یعنی شما نیازی به دانلود برنامه اضافی ندارید.

کافیست منوی استارت را باز کرده، عبارت cmd یا PowerShell را جستجو کنید و دستور زیر را تایپ نمایید (ساختار دستورات در ادامه توضیح داده می‌شود).

 

۲. کاربران مک (macOS) و لینوکس (Linux)

 

اگر از مک‌بوک یا توزیع‌های لینوکس (مانند اوبونتو) استفاده می‌کنید، کار شما بسیار ساده است. ابزار «ترمینال» (Terminal) در این سیستم‌ها به صورت ذاتی از SSH پشتیبانی می‌کند.

فقط کافیست کلیدهای ترکیبی Ctrl + Alt + T (در لینوکس) را بزنید یا در مک عبارت Terminal را جستجو کنید.

 

ساختار دستورات SSH و نحوه استفاده

 

برای کسانی که از ترمینال (مک، لینوکس یا CMD ویندوز) استفاده می‌کنند، درک ساختار دستور بسیار مهم است. دستور استاندارد به شکل زیر است:

ssh username@server_ip

به عنوان مثال، اگر نام کاربری شما root و آی‌پی سرور ۱۸۵.۱۰.۲۰.۳۰ باشد، دستور به این شکل خواهد بود:

ssh [email protected]

پس از فشردن اینتر، اگر اولین بار است وصل می‌شوید، باید تایپ کنید yes و اینتر بزنید. سپس رمز عبور از شما خواسته می‌شود.

توجه مهم: هنگام تایپ رمز عبور در محیط‌های ترمینال لینوکس و مک، *هیچ کاراکتری (حتی ستاره ) نمایش داده نمی‌شود. این یک ویژگی امنیتی است تا کسی طول رمز عبور شما را نبیند. رمز را با دقت تایپ کنید و اینتر بزنید.

 

جدول دستورات پرکاربرد SSH

 

برای اینکه بتوانید مانند یک حرفه‌ای عمل کنید، در جدول زیر مهم‌ترین سوئیچ‌ها (آپشن‌ها) که می‌توانید همراه با دستور SSH استفاده کنید، آورده شده است.

دستور / سوئیچ توضیحات کاربردی مثال واقعی
ssh user@ip دستور استاندارد و پایه برای اتصال سریع ssh [email protected]
-p [Port] زمانی که پورت SSH سرور از ۲۲ به عدد دیگری تغییر کرده است ssh [email protected] -p 2244
-v حالت دیباگ (Verbose)؛ نمایش جزئیات اتصال برای عیب‌یابی خطاها ssh -v [email protected]
-i [KeyPath] اتصال با استفاده از فایل کلید خصوصی (به جای رمز عبور) ssh -i /home/key.pem [email protected]
exit خروج امن از محیط سرور و قطع ارتباط SSH exit
-C فشرده‌سازی داده‌ها حین انتقال (مفید برای اینترنت‌های کند) ssh -C [email protected]

 

عیب‌یابی مشکلات رایج در اتصال (Troubleshooting)

 

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

 

۱. خطای Connection Refused

این خطا معمولاً به این معناست که درخواست شما به سرور می‌رسد، اما سرور آن را رد می‌کند.

دلیل احتمالی: سرویس SSH روی سرور خاموش است یا پورت اشتباهی وارد کرده‌اید.

راه حل: مطمئن شوید پورت پیش‌فرض تغییر نکرده است.

 

۲. خطای Connection Timed Out

این خطا یعنی درخواست شما اصلا به سرور نمی‌رسد و در میانه راه گم می‌شود.

دلیل احتمالی: فایروال سرور (یا فایروال اینترنت خودتان) جلوی پورت ۲۲ را گرفته است.

راه حل: بررسی کنید که IP شما توسط فایروال سرور بلاک نشده باشد.

 

۳. خطای Permission Denied

ترسناک‌ترین و در عین حال ساده‌ترین خطا! این یعنی سرور شما را می‌شناسد اما اجازه ورود نمی‌دهد.

دلیل احتمالی: رمز عبور اشتباه است یا نام کاربری را غلط تایپ کرده‌اید.

نکته: اگر از کپی/پیست استفاده می‌کنید، دقت کنید که فضای خالی (Space) اضافی کپی نشده باشد.

 

امنیت SSH: چگونه سرور خود را ضد نفوذ کنیم؟

 

تا اینجای کار یاد گرفتید که چگونه درب سرور را باز کنید و وارد شوید. اما یک مشکل بزرگ وجود دارد: پورت ۲۲ برای همه هکرها شناخته شده است.

هزاران ربات در سراسر اینترنت، به‌صورت شبانه‌روزی آی‌پی‌های مختلف را اسکن می‌کنند و به پورت پیش‌فرض SSH (همان ۲۲) حمله می‌کنند تا شاید رمز عبور شما را حدس بزنند.

در این بخش، تنظیماتی را بررسی می‌کنیم که امنیت سرور شما را از سطح “معمولی” به سطح “حرفه‌ای” ارتقا می‌دهد.

 

گام اول: تغییر پورت پیش‌فرض (حیاتی‌ترین اقدام)

 

اولین و ساده‌ترین راه برای کاهش حملات، تغییر پورت SSH از ۲۲ به یک عدد دیگر (مثلاً ۲۲۴۴) است. این کار مثل این است که درب خانه را از خیابان اصلی به یک کوچه فرعی منتقل کنید.

برای انجام این کار، باید فایل تنظیمات اصلی SSH را ویرایش کنید.

مراحل انجام کار:

۱. وارد سرور شوید و فایل تنظیمات را با ویرایشگر متن باز کنید: nano /etc/ssh/sshd_config

۲. به دنبال خطی بگردید که نوشته شده #Port 22.

۳. علامت # را از ابتدای خط حذف کنید (تا دستور فعال شود) و عدد ۲۲ را به عدد دلخواه خود (بین ۱۰۲۴ تا ۶۵۵۳۵) تغییر دهید. مثلا: Port 2244

۴. فایل را ذخیره کنید (Ctrl + O و سپس Enter) و خارج شوید (Ctrl + X).

نکته بسیار مهم: قبل از اینکه از سرور خارج شوید یا سرویس را ریستارت کنید، مطمئن شوید که پورت جدید (مثلاً ۲۲۴۴) را در فایروال سرور خود باز کرده‌اید. در غیر این صورت دسترسی خودتان هم قطع خواهد شد!

۵. سرویس SSH را ریستارت کنید تا تغییرات اعمال شود: service sshd restart

 

گام دوم: خداحافظی با کاربر Root

 

استفاده مستقیم از کاربر root برای اتصال به سرور، یک ریسک امنیتی بزرگ است. اگر هکری رمز روت را پیدا کند، کنترل کامل سیستم را در دست می‌گیرد.

روش استاندارد این است که یک کاربر معمولی بسازید، به او دسترسی مدیریتی (Sudo) بدهید و سپس امکان ورود مستقیم روت را ببندید.

چگونه ورود روت را غیرفعال کنیم؟

مجدداً فایل تنظیمات را باز کنید: /etc/ssh/sshd_config

دنبال عبارت PermitRootLogin بگردید.

مقدار جلوی آن را به no تغییر دهید: PermitRootLogin no

سرویس را ریستارت کنید.

حالا حتی اگر کسی رمز روت را بداند، نمی‌تواند از طریق SSH وارد شود.

 

مدیریت حرفه‌ای سرورها با فایل Config

 

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

آیا می‌دانستید می‌توانید برای هر سرور یک “نام مستعار” (Alias) تعریف کنید؟ با این کار به جای تایپ دستور طولانی: ssh [email protected] -p 2244

فقط کافیست تایپ کنید: ssh myserver

برای این کار باید فایلی به نام config را در کامپیوتر خودتان (نه در سرور) و در مسیر .ssh/ ایجاد کنید.

جدول پارامترهای فایل کانفیگ SSH

در جدول زیر، مهم‌ترین دستوراتی که می‌توانید در فایل کانفیگ سیستم خود (~/.ssh/config) بنویسید، توضیح داده شده است.

پارامتر توضیحات نمونه مقدار
Host نام دلخواه و کوتاه شما برای فراخوانی سرور myserver
HostName آدرس واقعی IP یا دامنه سرور ۱۹۲.۱۶۸.۱.۵۰
User نام کاربری که با آن وارد می‌شوید admin
Port شماره پورت SSH (اگر تغییر داده‌اید) ۲۲۴۴
IdentityFile مسیر فایل کلید خصوصی (در صورت استفاده از Key) ~/.ssh/id_rsa
ServerAliveInterval ارسال سیگنال زنده بودن (به ثانیه) برای جلوگیری از قطع شدن ۶۰

یک مثال عملی از محتوای فایل Config:

Host production
HostName 85.10.20.30
User root
Port 2020
ServerAliveInterval 60

 

با ذخیره متن بالا در فایل کانفیگ، از این پس فقط با تایپ ssh production وارد سرور می‌شوید.

 

جلوگیری از قطع شدن ارتباط (Timeouts)

 

یکی از آزاردهنده‌ترین اتفاقات هنگام کار با SSH، قطع شدن ارتباط هنگام بیکاری است. مثلاً برای چند دقیقه می‌روید تا چای بنوشید و وقتی برمی‌گردید، ارتباط قطع شده (Frozen) است.

برای حل این مشکل، می‌توانید تنظیماتی اعمال کنید که کلاینت و سرور به‌طور مرتب به هم “پینگ” بفرستند تا خط زنده بماند.

تنظیم در سمت سرور: در فایل sshd_config سرور، مقادیر زیر را اضافه یا اصلاح کنید:

ClientAliveInterval 60: یعنی هر ۶۰ ثانیه یک سیگنال به کاربر بفرست.

ClientAliveCountMax 3: یعنی اگر ۳ بار (۳ تا ۶۰ ثانیه) پاسخی نیامد، قطع کن.

این کار باعث می‌شود نشست (Session) شما پایدارتر بماند و با وقفه‌های کوتاه قطع نشود.

 

انتقال فایل از طریق SSH (آشنایی با SCP)

 

پروتکل SSH فقط برای دستور دادن نیست؛ شما می‌توانید از بستر امن آن برای انتقال فایل هم استفاده کنید. ابزار SCP (Secure Copy) دقیقاً برای همین کار ساخته شده است.

ساختار آن بسیار شبیه به دستور کپی معمولی (cp) است، با این تفاوت که می‌توانید فایل را بین کامپیوتر خود و سرور جابجا کنید.

مثال آپلود فایل به سرور: scp myfile.zip [email protected]:/home/backup

این دستور فایل myfile.zip را از سیستم شما برداشته و در پوشه /home/backup سرور قرار می‌دهد. امنیت این انتقال دقیقاً مشابه امنیت SSH است.

 

لایه دفاعی نهایی: مقابله هوشمند با نفوذگران

 

تغییر پورت و غیرفعال کردن روت اقدامات بسیار خوبی هستند، اما کافی نیستند. در دنیای واقعی، هکرها از نرم‌افزارهای خودکار (Bot) استفاده می‌کنند که می‌توانند هزاران رمز عبور را در دقیقه تست کنند. به این نوع حملات، Brute-force یا “جستجوی فراگیر” می‌گویند.

آیا راهی وجود دارد که سرور به صورت هوشمند متوجه این حملات شود و آی‌پی مهاجم را مسدود کند؟ بله، ابزاری به نام Fail2Ban.

 

محافظت خودکار با Fail2Ban (نگهبان هوشیار سرور)

 

ابزار Fail2Ban مانند یک نگهبان امنیتی عمل می‌کند که دفترچه لاگ‌های سرور را مدام می‌خواند.

اگر این ابزار متوجه شود که یک آی‌پی خاص، چندین بار پشت سر هم رمز عبور اشتباه وارد کرده است، بلافاصله آن آی‌پی را در فایروال مسدود (Ban) می‌کند. این مسدود سازی می‌تواند موقت (مثلاً ۱۰ دقیقه) یا دائم باشد.

نصب و پیکربندی این ابزار روی سرورهای لینوکسی (مانند اوبونتو یا سنت‌او‌اس) بسیار ساده است و تاثیر چشمگیری بر امنیت دارد.

 

جدول دستورات مهم مدیریت Fail2Ban

 

پس از نصب این سرویس، شما به عنوان مدیر سرور نیاز دارید وضعیت آن را بررسی کنید یا اگر آی‌پی خودتان اشتباهاً مسدود شد، آن را آزاد کنید. جدول زیر کاربردی‌ترین دستورات این ابزار را نشان می‌دهد:

دستور / پارامتر توضیحات کاربردی مثال عملی
fail2ban-client status بررسی وضعیت کلی سرویس و لیست زندان‌های فعال fail2ban-client status
status [Jail Name] مشاهده لیست آی‌پی‌های مسدود شده در یک بخش خاص (مثل SSH) fail2ban-client status sshd
set [Jail] unbanip [IP] رفع مسدودی (Unban) یک آی‌پی خاص به صورت دستی fail2ban-client set sshd unbanip 1.2.3.4
bantime مدت زمانی که آی‌پی مهاجم باید مسدود بماند (در فایل تنظیمات) bantime = 1h (یک ساعت)
maxretry تعداد دفعات مجاز برای تلاش ناموفق قبل از مسدود شدن maxretry = 3

 

قدم بعدی چیست؟ خداحافظی با رمز عبور!

 

با تمام این تفاسیر، هنوز یک نقطه ضعف وجود دارد: “رمز عبور”. رمزهای عبور ممکن است لو بروند، فراموش شوند یا توسط بدافزارهای کی‌لاگر (Keylogger) دزدیده شوند.

حرفه‌ای‌ترین مدیران سیستم در دنیا، اصلا از رمز عبور استفاده نمی‌کنند! آن‌ها از روشی به نام SSH Key (کلیدهای رمزنگاری شده) استفاده می‌کنند. در این روش، شما یک “کلید” دیجیتالی روی کامپیوتر خود دارید و “قفل” آن را روی سرور می‌گذارید. بدون آن فایل کلید، هیچ‌کس نمی‌تواند وارد شود، حتی اگر رمز عبور را بداند.

این روش، بالاترین سطح امنیت ممکن در دنیای لینوکس است. آیا آماده‌اید امنیت سرور خود را به سطح حرفه ای تری برسانید؟

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

 

نکات قابل توجه در اتصال به سرور لینوکسی

 

  • در اتصال خود به سرور مجازی یا اختصاصی خود کاملا دقت داشته باشید و در صورتی که اطلاعات کافی از مدیریت سرور و یا دستورات لینوکسی ندارید، لطفا به مدیر سرور خود اطلاع دهید و از انجام هر اقدامی خودداری کنید.
  • از ارایه دسترسی سرور به افراد غیر مرتبط جدا خودداری کنید چرا که با این موضوع دسترسی های کافی برای هر اقدامی بر روی سرور را به ایشان منتقل خواهید کرد.
  • قبل از هر اقدامی در سرور، از وجود آخرین و بروز ترین بک آپ از اطلاعات مرتبط در سرور لینوکسی خود مطمین شوید.
  • استفاده از نرم افزار PuTTY در تمامی سرورهای لینوکسی در تمامی نقاط دنیا قابل استفاده خواهد بود. بنابراین در صورت استفاده از سرور مجازی لینوکس ایران نیز می توانید از این مقاله برای اتصال به سرور خود استفاده کنید.
  • در صورتی که برای خرید سرور مجازی نیاز به راهنمایی دارید، می توانید با ما در هر زمانی در تماس باشید.

۵/۵ - (۹ امتیاز)
جستجو

سرفصل های مقاله

نظرات کاربران
دیدگاهتان را بنویسید

لطفا علاوه بر متن نظر، نام و ایمیل خود را نیز وارد کنید. (ایمیل شما منتشر نخواهد شد)