SSH (Secure Shell) یک پروتکل شبکه‌ای است که به منظور تأمین ارتباطات امن بین دو سیستم در یک شبکه ناامن طراحی شده است. این پروتکل معمولاً برای مدیریت سرورها و انتقال داده‌ها استفاده می‌شود و به کاربران این امکان را می‌دهد که به صورت امن و رمزگذاری شده به سیستم‌های دیگر متصل شوند. SSH از روش‌های رمزگذاری پیشرفته برای محافظت از اطلاعات و جلوگیری از دسترسی غیرمجاز به داده‌ها استفاده می‌کند و به عنوان یکی از ابزارهای کلیدی در زمینه امنیت سایبری شناخته می‌شود.

عملکرد SSH به گونه‌ای است که ابتدا یک اتصال امن بین کلاینت و سرور برقرار می‌کند و سپس از طریق این اتصال، داده‌ها به صورت رمزگذاری شده منتقل می‌شوند. این پروتکل انواع مختلفی دارد که به کاربران اجازه می‌دهد تا به صورت کارآمد و ایمن از آن استفاده کنند. در این مقاله از آموزش های امنیت سرور و سایت به بررسی ویژگی‌ها، نحوه کار و انواع مختلف SSH خواهیم پرداخت تا درک بهتری از اهمیت و کاربردهای این پروتکل امنیتی به دست آوریم. برای اطلاعات بیشتر در مورد سرورها مقاله سرور چیست؟ را مطالعه کنید.

SSH چیست؟

SSH چیست

SSH (Secure Shell) یک پروتکل شبکه‌ای است که برای ایجاد یک ارتباط امن بین دو کامپیوتر استفاده می‌شود. این پروتکل به ویژه در مدیریت سرورها و دستگاه‌های شبکه‌ای مورد استفاده قرار می‌گیرد و به کاربران این امکان را می‌دهد که به صورت امن و از راه دور به سیستم‌ها متصل شوند. SSH به جای استفاده از پروتکل‌های غیرامن مانند Telnet، یک لایه امنیتی اضافه می‌کند و از تکنیک‌های رمزگذاری برای محافظت از اطلاعات منتقل شده استفاده می‌کند.

استفاده اصلی SSH شامل موارد زیر است:

  1. مدیریت از راه دور: سیستم‌Administrators می‌توانند به سرورها و سیستم‌های دیگر متصل شوند و از طریق خط فرمان آن‌ها را مدیریت کنند.
  2. انتقال فایل: SSH امکان انتقال فایل‌ها را به صورت امن از یک سیستم به سیستم دیگر فراهم می‌آورد. پروتکل‌هایی مانند SCP (Secure Copy Protocol) و SFTP (Secure File Transfer Protocol) بر اساس SSH ساخته شده‌اند.
  3. ایجاد تونل‌های امن: SSH می‌تواند برای ایجاد تونل‌های رمزگذاری شده برای انتقال امن داده‌ها از یک شبکه به شبکه دیگر مورد استفاده قرار گیرد.

مطلب مرتبط: SFTP چیست؟ راهنمای کامل

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

اگر به دنبال یک راه‌حل مقرون‌به‌صرفه و انعطاف‌پذیر برای میزبانی وب‌سایت یا برنامه‌های خود هستید، خرید سرور مجازی (VPS) می‌تواند گزینه‌ای عالی باشد. با استفاده از سرور مجازی، شما می‌توانید از مزایای سرور اختصاصی بهره‌مند شوید در حالی که هزینه‌های کمتری را متحمل می‌شوید.

تاریخچه ‌SSH

تاریخچه ‌SSH

SSH (Secure Shell) در اوایل دهه 1990 توسط فردی به نام “تونس لیندن” (Tatu Ylönen) توسعه داده شد. در آن زمان، مشکلات امنیتی در پروتکل‌های متداولی مانند Telnet و rlogin به وضوح مشهود بود، زیرا این پروتکل‌ها اطلاعات را به صورت متنی (Plain Text) ارسال می‌کردند و در نتیجه امکان شنود و سرقت اطلاعات وجود داشت.

تاریخچه SSH به طور خلاصه به صورت زیر است:

  1. توسعه اولیه (1995): در سال 1995، Tatu Ylönen برای حل مشکلات امنیتی موجود، SSH را طراحی کرد و نسخه اولیه آن را منتشر کرد. این نسخه به سرعت توجه بسیاری از کاربران و مدیران سیستم را جلب کرد.
  2. انتشار نسخه 1 (SSH-1): نسخه اول SSH که به نام SSH-1 شناخته می‌شود، به کاربران این امکان را می‌داد که از طریق یک ارتباط امن به سیستم‌های دیگر متصل شوند. این نسخه از الگوریتم‌های رمزگذاری مانند DES و 3DES استفاده می‌کرد.
  3. انتشار نسخه 2 (SSH-2): در سال 2006، نسخه دوم SSH با نام SSH-2 منتشر شد. این نسخه بهبودهای زیادی نسبت به نسخه اول داشت، از جمله استفاده از الگوریتم‌های رمزگذاری قوی‌تر و قابلیت‌های جدید مانند احراز هویت چند عاملی. SSH-2 به تدریج به استاندارد جدید در صنعت تبدیل شد.
  4. استانداردسازی و پذیرش عمومی: با گذشت زمان، SSH به عنوان یک استاندارد در صنعت فناوری اطلاعات پذیرفته شد و بسیاری از توزیع‌های لینوکس و سیستم‌های عامل دیگر به طور پیش‌فرض از آن پشتیبانی می‌کنند.
  5. گسترش و پیشرفت: SSH به عنوان یک پروتکل مهم در امنیت شبکه‌ها و مدیریت سیستم‌ها در نظر گرفته می‌شود. با پیشرفت‌های فناوری و افزایش نیاز به امنیت در ارتباطات، SSH نیز به روز رسانی‌ها و بهبودهایی را تجربه کرده است.

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

SSH چگونه کار می‌کند؟

SSH چگونه کار می‌کند؟

Ssh از یک الگوی کلاینت-سرور استفاده می‌کند که در آن کلاینت‌ها و سرورها از طریق یک کانال امن با هم ارتباط برقرار می‌کنند.

پروتکل SSH دارای سه لایه است:

  1. لایه حمل و نقل: ارتباط امن بین سرور و مشتری را تضمین می‌کند، رمزگذاری/رمزگشایی داده‌ها را نظارت می‌کند و از یکپارچگی اتصال محافظت می‌کند. همچنین ذخیره و فشرده سازی داده‌ها را انجام می‌دهد.
  2. لایه احراز هویت: روال احراز هویت مشتری را انجام می‌دهد.
  3. لایه اتصال: کانال‌های ارتباطی را پس از احراز هویت مدیریت می‌کند.

SSH یک پروتکل مبتنی بر سرویس گیرنده-سرور است. این به این معنی است که این پروتکل به دستگاهی که درخواست اطلاعات یا خدمات (سرویس گیرنده) می‌کند اجازه می‌دهد تا به دستگاه دیگری (سرور) متصل شود.

هنگامی‌که یک کلاینت از طریق SSH به یک سرور متصل می‌شود، دستگاه سرور را می‌توان مانند یک کامپیوتر محلی کنترل کرد. سرور دارای یک پورت TCP تعیین شده است که از طریق آن شبکه را نظارت می‌کند و منتظر می‌ماند تا کلاینت‌ها اتصال را اولیه کنند. قبل از اینکه یک کلاینت متصل شود و دستورات SSH را صادر کند، باید فرآیند احراز هویت را پشت سر بگذارد.

تکنیک‌های رمزگذاری در SSH

تکنیک‌های رمزگذاری در SSH

SSH از سه نوع رمزگذاری داده در جریان ارتباط بین ماشین‌ها استفاده می‌کند که عبارتند از:

۱- رمزگذاری متقارن (Symmetric Encryption)

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

هر زمان که کلاینت و سرور در مورد اینکه کدام الگوریتم را برای یک جلسه SSH استفاده کنند مذاکره می‌کنند، همیشه اولین الگوریتم را در لیست مشتری که سرور پشتیبانی می‌کند، انتخاب می‌کنند.

۲- رمزگذاری نامتقارن (Asymmetric Encryption)

زمانی که ماشین‌ها از دو کلید متفاوت (اما از نظر ریاضی مرتبط)، عمومی‌و خصوصی برای انجام رمزگذاری استفاده می‌کنند، داده‌ها به‌طور نامتقارن رمزگذاری می‌شوند. ماشین کلاینت که در راه اندازی رمزگذاری شرکت کرده است می‌تواند اطلاعات را با استفاده از کلید خصوصی رمزگشایی کند.

همچنین SSH از کلیدهای نامتقارن نیز برای مبادله کلیدهای متقارن استفاده می‌کند، مانند فرآیند احراز هویت کاربر.

۳- هش کردن (Hashing)

SSH از هش برای تأیید اعتبار استفاده می‌کند. الگوریتم‌های درهم‌سازی که برای تولید هش در SSH استفاده می‌شوند، کد احراز هویت پیام (MAC) و کد احراز هویت هش پیام (HMAC) هستند.

یک الگوریتم هش از یک بسته داده برای ایجاد یک رشته هش منحصر به فرد استفاده می‌کند. دستگاه ارسال کننده بسته همیشه بسته را همراه با مقدار هش ارسال می‌کند.

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

چگونه SSH با تکنیک‌های رمزگذاری کار می‌کند؟

چگونه SSH با این تکنیک‌های رمزگذاری کار می‌کند؟

SSH (Secure Shell) یک پروتکل شبکه‌ای است که برای ورود امن به سیستم‌های از راه دور و انجام عملیات مدیریتی و انتقال داده‌ها به کار می‌رود. یکی از ویژگی‌های اصلی SSH، استفاده از تکنیک‌های رمزگذاری برای تأمین امنیت ارتباطات است. در زیر به نحوه کار SSH با تکنیک‌های رمزگذاری پرداخته می‌شود:

1. فرآیند احراز هویت (Authentication)

SSH از دو نوع احراز هویت اصلی استفاده می‌کند:

  • احراز هویت بر اساس رمز عبور: کاربر با وارد کردن نام کاربری و رمز عبور خود به سیستم متصل می‌شود.
  • احراز هویت کلید عمومی (Public Key Authentication): کاربر یک جفت کلید (کلید عمومی و خصوصی) تولید می‌کند. کلید عمومی روی سرور ذخیره می‌شود و کلید خصوصی باید محرمانه باقی بماند. کاربر با استفاده از کلید خصوصی خود می‌تواند به سرور احراز هویت کند.

2. ایجاد کانال امن (Secure Channel)

بعد از احراز هویت موفق، SSH یک کانال امن را با استفاده از مراحل زیر ایجاد می‌کند:

  • تبادل کلید (Key Exchange): در این مرحله، کلیدهای موقتی (Session Keys) بین دو طرف (کلاینت و سرور) به صورت امن تبادل می‌شود. این کلیدها برای رمزگذاری داده‌های جلسات بعدی استفاده می‌شوند.
  • رمزگذاری داده‌ها: پس از آنکه کلیدهای موقتی ایجاد شدند، SSH از الگوریتم‌های رمزگذاری برای رمزگذاری داده‌ها استفاده می‌کند. این الگوریتم‌ها می‌توانند شامل AES، Blowfish، 3DES و غیره باشند. داده‌های ارسال شده از طرف کلاینت به سرور و بالعکس به این طریق رمزگذاری می‌شوند تا از شنود یا تغییر آن‌ها جلوگیری شود.

3. تأمین یکپارچگی داده‌ها (Data Integrity)

SSH همچنین از تکنیک‌های تأمین یکپارچگی داده‌ها مانند HMAC (Hash-based Message Authentication Code) استفاده می‌کند. این تکنیک تضمین می‌کند که داده‌های منتقل شده بدون تغییر و دستکاری باقی بمانند.

4. تأمین محرمانگی و امنیت

با استفاده از رمزگذاری و احراز هویت، SSH امنیت داده‌ها را در حین انتقال تأمین می‌کند و اطمینان می‌دهد که تنها افراد مجاز می‌توانند به اطلاعات حساس دسترسی پیدا کنند.

SSH با استفاده از تکنیک‌های رمزگذاری و احراز هویت، یک محیط امن برای مدیریت سیستم‌های از راه دور و انتقال داده‌ها فراهم می‌آورد. این پروتکل به عنوان یکی از استانداردهای اصلی در مدیریت سرورها و ارتباطات شبکه‌ای در نظر گرفته می‌شود.

اگر به دنبال افزایش امنیت و عملکرد در پروژه‌های خود هستید، خرید سرور اختصاصی می‌تواند گزینه مناسبی باشد. با انتخاب سرور اختصاصی، شما به یک محیط کاملاً کنترل‌شده دسترسی خواهید داشت که به شما امکان می‌دهد نرم‌افزارها و تنظیمات مورد نیاز خود را به‌راحتی مدیریت کنید. همچنین، با استفاده از پروتکل SSH، می‌توانید به‌صورت امن و بدون نگرانی از حملات سایبری، به سرور خود متصل شده و عملیات مدیریتی را انجام دهید.

کاربردهای SSH

کاربردهای SSH (SSH Uses)

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

  1. دسترسی از راه دور به سرورها: SSH به کاربران اجازه می‌دهد تا از هر نقطه‌ای به سرورهای خود متصل شوند و دستورات را از راه دور اجرا کنند. این ویژگی به ویژه برای مدیران سیستم و توسعه‌دهندگان بسیار مفید است، زیرا می‌توانند بدون نیاز به حضور فیزیکی در محل سرور، به مدیریت و پیکربندی سیستم‌ها بپردازند.
  2. انتقال فایل‌های امن: با استفاده از پروتکل SFTP (SSH File Transfer Protocol) و SCP (Secure Copy Protocol)، کاربران می‌توانند به صورت ایمن فایل‌ها را بین سیستم‌های مختلف منتقل کنند. این انتقال تحت رمزگذاری قرار می‌گیرد که به حفظ حریم خصوصی و امنیت داده‌ها کمک می‌کند.
  3. اجرای دستورات از راه دور: SSH به کاربران این امکان را می‌دهد که دستورات را به صورت مستقیم از طریق خط فرمان روی سرورهای راه دور اجرا کنند. این قابلیت برای خودکارسازی وظایف و اسکریپت‌نویسی بسیار کاربردی است.
  4. ایجاد تونل‌های امن: SSH می‌تواند به عنوان یک تونل امن برای سایر پروتکل‌ها مورد استفاده قرار گیرد. این ویژگی به کاربران اجازه می‌دهد تا ارتباطات غیر امن را از طریق یک کانال امن منتقل کنند.
  5. مدیریت پیکربندی و نظارت بر سیستم: مدیران سیستم می‌توانند با استفاده از SSH، پیکربندی‌های سرور را مدیریت کرده و وضعیت سیستم‌ها را نظارت کنند، که به بهبود امنیت و کارایی سیستم کمک می‌کند.

با توجه به این کاربردها، SSH به عنوان یکی از ابزارهای ضروری در زمینه امنیت شبکه و مدیریت سرور شناخته می‌شود.

چطور می‌توان از ssh استفاده کرد؟

چطور می‌توان از ssh استفاده کرد؟

برای استفاده از SSH (Secure Shell) برای اتصال به یک سرور یا سیستم دیگر، مراحل زیر را دنبال کنید:

1. نصب SSH Client

  • برای ویندوز: می‌توانید از ابزارهایی مانند PuTTY یا OpenSSH که به‌طور پیش‌فرض در ویندوز 10 و بالاتر نصب شده است استفاده کنید.
  • برای macOS و لینوکس: SSH به‌طور پیش‌فرض در ترمینال نصب شده است و می‌توانید از آن استفاده کنید.

2. دریافت اطلاعات ورود

  • شما نیاز به اطلاعات زیر دارید:
    • آدرس IP یا دامنه: آدرس سروری که می‌خواهید به آن متصل شوید.
    • نام کاربری: نام کاربری که برای ورود به سرور دارید.
    • گذرواژه: گذرواژه مربوط به نام کاربری یا کلید خصوصی (در صورتی که از احراز هویت با کلید استفاده می‌کنید).

3. اتصال به سرور با استفاده از SSH

  • برای ویندوز (با استفاده از PuTTY):
    1. PuTTY را باز کنید.
    2. در بخش “Host Name (or IP address)”، آدرس IP یا دامنه سرور را وارد کنید.
    3. پورت را به 22 تنظیم کنید (پورت پیش‌فرض SSH).
    4. بر روی “Open” کلیک کنید.
    5. نام کاربری را وارد کرده و Enter بزنید.
    6. گذرواژه را وارد کنید (در حین تایپ، چیزی نمایش داده نمی‌شود).
  • برای macOS و لینوکس:
    1. ترمینال را باز کنید.
    2. دستور زیر را وارد کنید و Enter بزنید:
      ssh username@server_ip
      

      (به‌جای username، نام کاربری و به‌جای server_ip، آدرس IP یا دامنه سرور را وارد کنید).

    3. اگر از کلید خصوصی استفاده می‌کنید، می‌توانید به این صورت وارد شوید:
      ssh -i /path/to/private_key username@server_ip
      
    4. پس از آن، ممکن است از شما خواسته شود تا گذرواژه را وارد کنید.

4. استفاده از SSH Keys (اختیاری)

  • برای افزایش امنیت، می‌توانید از کلیدهای عمومی و خصوصی استفاده کنید:
    1. کلید SSH را ایجاد کنید:
      ssh-keygen
      
    2. کلید عمومی (~/.ssh/id_rsa.pub) را به سرور اضافه کنید:
      ssh-copy-id username@server_ip
      
    3. پس از این کار، می‌توانید بدون وارد کردن گذرواژه به سرور متصل شوید.

5. مدیریت سرور از طریق SSH

  • پس از اتصال، می‌توانید دستورات مختلفی را برای مدیریت سرور، نصب نرم‌افزار، بررسی وضعیت سیستم و … اجرا کنید.

نکات امنیتی:

  • همیشه از کلیدهای SSH به‌جای گذرواژه استفاده کنید.
  • از تغییر پورت پیش‌فرض SSH (پورت 22) به یک پورت دیگر برای افزایش امنیت استفاده کنید.
  • فایروال سرور را طوری تنظیم کنید که فقط از IP‌های مشخص شده اجازه دسترسی به پورت SSH داشته باشند.

با دنبال کردن این مراحل، می‌توانید به‌راحتی از SSH برای اتصال و مدیریت سرور خود استفاده کنید.

جمع بندی

SSH (Secure Shell) یک پروتکل شبکه‌ای است که برای برقراری ارتباط امن بین دو سیستم از طریق یک شبکه غیرامن طراحی شده است. این پروتکل به کاربران اجازه می‌دهد تا به سرورهای از راه دور متصل شوند و دستورات را اجرا کنند، فایل‌ها را منتقل کنند و کارهای مدیریتی را انجام دهند. SSH از رمزگذاری قوی برای محافظت از داده‌ها در حین انتقال استفاده می‌کند و در برابر حملات مختلفی مانند شنود و نفوذ محافظت می‌کند. با استفاده از SSH، کاربران می‌توانند به صورت ایمن به سرورهای خود دسترسی پیدا کنند و از خطرات احتمالی جلوگیری کنند.

این پروتکل به طور گسترده در مدیریت سرورها و سیستم‌های راه دور مورد استفاده قرار می‌گیرد و برای انتقال فایل‌ها نیز می‌تواند از SFTP (SSH File Transfer Protocol) استفاده کند. SSH به دو روش احراز هویت با استفاده از گذرواژه و کلیدهای عمومی و خصوصی عمل می‌کند که به کاربران این امکان را می‌دهد تا با سطح امنیت بالاتری به سرورهای خود متصل شوند. با توجه به این ویژگی‌ها، SSH به یکی از ابزارهای اساسی برای مدیران سیستم و توسعه‌دهندگان تبدیل شده است.

سوالات متداول

اتصالات SSH بیشتر برای ایمن سازی انواع مختلف ارتباطات بین یک ماشین محلی و یک میزبان راه دور استفاده شده است، از جمله:
  •       دسترسی ایمن از راه دور به منابع
  •       اجرای دستورات از راه دور
  •       ارائه وصله‌های نرم افزاری و به روز رسانی.
  •       انتقال فایل‌های تعاملی و خودکار
پورت پیش فرض برای اتصالات کلاینت SSH 22 است. برای تغییر این پیش فرض، یک شماره پورت بین 1024 و 32767 وارد کنید. پورت پیش فرض برای اتصالات کلاینت Telnet 23 است
SSH معمولاً از طریق TCP اجرا می‌شود. تنظیمات پیش‌فرض پروتکل SSH این است که برای اتصالات به درگاه TCP 22 گوش دهید.
SSH همه اتصالات را رمزگذاری و احراز هویت می‌کند. SSH به متخصصان IT و امنیت اطلاعات (infosec) مکانیزمی‌امن برای مدیریت کلاینت‌های SSH از راه دور ارائه می‌دهد. SSH به جای نیاز به احراز هویت رمز عبور برای راه اندازی ارتباط بین سرویس گیرنده و سرور SSH، خود دستگاه‌ها را احراز هویت می‌کند.
لایه انتقال SSH یک پروتکل انتقال امن و سطح پایین است. این رمزگذاری قوی، احراز هویت میزبان رمزنگاری و حفاظت از یکپارچگی را فراهم می‌کند. احراز هویت در این سطح پروتکل مبتنی بر میزبان است.