ssh چیست؟ آشنایی با 0 تا 100 پروتکل SSH

SSH چیست؟ آشنایی با ۰ تا ۱۰۰ پروتکل SSH

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

مهم‌ترین رسالت پروتکل SSH هم مثل همتای خود یعنی SSL، تامین امنیت است؛ تامین امنیت از طریق رمزنگاری اتصالات بین دستگاه‌های مختلف! 

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

بگذارید این‌طور بگوییم که SSH پروتکل و روشی است که به‌اندازهٔ یک رمز عبور هزار کلمه‌ای برای شما و اتصالات‌تان امنیت می‌آورد! از طرفی هم به شما اجازه می‌دهد دسترسی آزادتری به اینترنت داشته باشید.

کمی پیچیده شد؛ ولی نگران نباشید! در ادامه مقاله، اول به زبان ساده توضیح می‌دهیم که SSH چیست، بعد هم سراغ باقی جزئیات می‌رویم و با کاربردها و نحوه کار آن آشنا می‌شویم.

اگر وقت و حوصله خواندن کامل این مقاله را ندارید، می‌توانید ویدیوی زیر را تماشا کنید:

SSH چیست؟

کلمه SSH مخفف عبارت Secure Shell یا Secure Socket Shell است که ترجمه تحت‌الفظی آن می‌شود «پوسته امن»!

در واقع SSH یک پروتکل امن است که برای اتصال به سرورهای راه دور (remote servers) استفاده می‌شود؛ یعنی با این پروتکل می‌توانید از راه دور وارد یک سرور شوید، فرمان اجرا کنید، فایل منتقل کنید یا تنظیمات سرور را تغییر دهید؛ آن هم به‌صورت رمزنگاری‌شده و امن.

در واقع SSH جایگزینی امن برای پروتکل‌های قدیمی‌تر مثل Telnet و FTP (که از نظر ایمنی ضعیف هستند) است.

مثالی از عملکرد SSH

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

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

اما با پروتکل SSH چطور؟

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

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

خب! تا اینجا فهمیدیم SSH چیه و به چه کار می‌آید. در بخش بعدی به‌طور جزئی‌تر به کاربردهای SSH می‌پردازیم.

پیشنهاد خواندنی: تغییر پورت SSH در سرور مجازی لینوکس (چرا و چگونه؟)

کاربردهای متداول SSH چیست؟

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

  • مدیریت از راه دور سرورها، زیرساخت‌ها و رایانه‌های کارکنان (برای مدیران)
  • انتقال ایمن فایل‌ها (SSH امن‌تر از پروتکل‌های رمزگذاری‌نشده‌ای مثل FTP است)
  • دسترسی به خدمات در فضای ابری بدون قرار دادن پورت‌های دستگاه محلی در معرض اینترنت
  • اتصال امن بین سرور و کلاینت در یک شبکه خصوصی
  • دور زدن محدودیت‌های فایروال
اتصال امن بین سرور و کلاینت از طریق SSH

نحوه کار پروتکل SSH چگونه است؟

پروتکل SSH در مدل سرور و کلاینت کار می‌کند. یعنی SSH وظیفه دارد که اتصال امنی میان این دو برقرار کند. چطور این کار را انجام می‌دهد؟ خیلی ساده!

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

تصویر زیر کمک می‌کند این پروسه را بهتر درک کنید:

نحوه کار SSH

بیایید کمی تخصص‌تر و موشکافانه‌تر به نحوه کار SSH نگاه کنیم.

اینترنت روی مجموعه‌ای از قواعد پروتکل‌ها به نام TCP/IP بنا شده است که SSH هم از این مجموعه قواعد پیروی می‌کند. به TCP «پروتکل کنترل انتقال» و به IP «پروتکل اینترنت» هم می‌گویند. قبلاً در مقاله دیگری درباره اینکه آی‌پی چیست مفصل توضیح داده‌ایم.

ترکیب این دو پروتکل با هم، باعث می‌شود که اطلاعات به شکل درست و از مسیر مناسب به مقصد برسند. IP مثل آدرس پستی عمل می‌کند و نشان می‌دهد که بسته‌های داده (packets) باید به کجا و چه آدرسی برود. TCP هم مثل طبقه یا واحدی از یک ساختمان است و مشخص می‌کند بسته در مقصد به کدام بخش باید تحویل داده شود.

علاوه بر TCP/IP معمولاً از پروتکل‌های دیگری برای مرتب کردن اطلاعات و قابل استفاده کردن آن‌ها استفاده می‌شود. SSH یکی از این پروتکل‌هاست (مانند HTTP برای وب، FTP برای انتقال فایل و SMTP برای ایمیل) که در ۴ مرحله این کار را انجام می‌دهد.

پیشنهاد خواندنی: تکنولوژی Raid چیست و چه کاربردی دارد؟

رمزنگاری با کلید عمومی

همان‌طور که گفتیم، SSH «امن» است؛ چون از رمزنگاری و احراز هویت با روشی به نام «رمزنگاری با کلید» استفاده می‌کند. حالا ssh key چیست؟

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

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

این کلیدهای «نامتقارن» (به این کلیدها نامتقارن گفته می‌شود چون ارزش متفاوتی دارند) باعث می‌شوند دو طرفِ ارتباط بتوانند برای رمزنگاری بیشتر روی کانال ارتباطی، کلیدهای «متقارن» مشترکی را با هم توافق کنند. بعد از توافق، دو طرف از کلیدهای متقارن برای رمزنگاری اطلاعاتی که ردوبدل می‌کنند، استفاده می‌کنند.

در ارتباط SSH، هر دو طرف یک جفت کلید عمومی/خصوصی دارند و با استفاده از این کلیدها هویت یکدیگر را تایید می‌کنند. این تفاوت اصلی SSH با پروتکل HTTPS است که در اکثر پیاده‌سازی‌ها فقط هویت سرور وب در ارتباط «کاربر-سرور» را تایید می‌کند.

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

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

 رمزنگاری با کلید عمومی

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

پیشنهاد خواندنی: SNI چیست و چه کاربردی برای امنیت وب‌سایت‌ها دارد؟ (به زبان ساده)

احراز هویت

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

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

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

تونل‌زنی SSH یا «پورت فورواردینگ»

پورت فورواردینگ شبیه فرایند رساندن بسته توسط پست‌چی به شماست. فرض کنید فروشگاهی که خرید را از اون انجام دادید، بسته را برای پست می‌فرستد و پست‌چی آن را به دست شما می‌رساند.

پورت فورواردینگ هم تقریباً همچین فرایندی است؛ یعنی بسته‌های اطلاعاتی که به یک آدرس IP و پورت خاص روی یک دستگاه فرستاده می‌شوند را به یک آدرس IP و پورت روی دستگاه دیگر هدایت می‌کند.

تونل‌زنی SSH یا «پورت فورواردینگ»

توضیح تصویر:

  • کاربر از پورت محلی برای برقراری ارتباط استفاده می‌کند.
  • ارتباط از طریق تونل SSH برقرار می‌شود که ترافیک بین کاربر و سرور را رمزگذاری می‌کند.
  • مدیر یا ادمین سرور که در سمت دیگر تونل SSH قرار دارد، درخواست‌ها را از پورت محلی کاربر دریافت می‌کند.
  • پس از دریافت درخواست‌ها، سرور به پورت از راه دور (روی سرور مانند example.com) می‌رود.
پیشنهاد خواندنی: پروتکل https چیست؟ چه فرقی با HTTP دارد و چرا به آن نیاز داریم؟

استفاده از SSH

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

پیشنهاد خواندنی: آموزش کامل نصب و راه‌اندازی SSH در لینوکس

تفاوت SSH و SSL چیست؟

دو پروتکل SSL و SSH در عین یکسان بودنِ وظیفهٔ انتقال امن داده‌، تفاوت‌های اساسی با یکدیگر دارند. 

اول از همه این که SSL مسئول برقراری امن ارتباط بین مرورگر و سرورهای سایتی که بازدید می‌کنید را برعهده دارد، در صورتی که ‌SSH ارتباط بین سرور و کلاینت را امن نگه می‌دارد. 

جدول مقایسه SSL و SSH

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

تفاوت SSH و Telnet

هر دو این پروتکل‌ها برای اتصال به دستگاه‌ها از راه دور استفاده می‌شوند، ولی یک‌سری تفاوت‌ها دارند که در جدول زیر می‌توانید ببینید:

ویژگی SSH (Secure Shell) Telnet
امنیت اتصال رمزنگاری‌شده (Encrypted) بدون رمزنگاری (Plain text)
ارسال رمز عبور به‌صورت امن و رمزنگاری‌شده به‌صورت متن واضح (قابل شنود)
پشتیبانی از کلید خصوصی دارد (Public/Private Key Authentication) ندارد
قابلیت انتقال فایل دارد ندارد
پورت پیش‌فرض ۲۲ ۲۳
پروتکل ارتباطی Secure Shell Protocol Telnet Protocol
قابلیت Tunneling دارد (برای فوروارد پورت یا VPN ساده) ندارد
کاربرد امروزی استاندارد مدرن برای اتصال امن منسوخ شده، تنها برای موارد خاص تستی
مصرف منابع سیستم کمی بیشتر (به‌خاطر رمزنگاری) کمتر (اما با ریسک امنیتی بالا)
مناسب برای استفاده حرفه‌ای بله خیر

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

مقاله «تلنت (telnet) چیست و چه کاربردهایی دارد؟» را بخوانید تا بیشتر با این پروتکل آشنا شوید.

آشنایی با چند اصطلاح درباره SSH

تا اینجا گفتیم که ssh در شبکه چیست و با پروسه‌ها و نحوهٔ کار آن آشنا شدیم. بد نیست کمی هم در اصطلاحات تخصصی آن عمیق‌تر شویم و مفاهیم را درک کنیم:

پورت SSH چیست؟

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

از آنجایی که شماره پورت SSH را می‌توان تغییر داد، در صورت در دسترس بودن، می‌توان هر شماره پورت دیگری را تنظیم کرد. مادامی‌که از شماره پورت پیش‌فرض ssh استفاده می‌کنید، هکرها به راحتی می‌توانند داده‌های انتقال یافته شما را هک کنند.

بنابراین، اگر به ارتباط بسیار ایمن نیاز دارید، شماره پورت پیش‌فرض SSH را به آن تغییر دهید تا با حمله brute force مواجه نشوید.

پیشنهاد خواندنی: Juice SSH چیست؟ (راهنمای اتصال به سرور با سیستم اندرویدی)

سرور SSH چیست؟

سرور SSH یا SSH server یک نرم‌افزار است که بر روی سرور نصب می‌شود و اجازه می‌دهد تا کاربران از طریق پروتکل SSH به سرور متصل شوند و با آن کار کنند.

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

پیشنهاد خواندنی: پروتکل (Protocol) چیست و چگونه کار می‌کند؟

 SSH tunnel چیست؟

اگر با خواندن پاراگراف‌های بالا از خود پرسیده‌اید «پس ssh tunnel چیست؟» باید بگوییم که درواقع SSH Tunneling یا SSH Port Forwarding یعنی تمام برنامه‌های سرور یا دستگاه کلاینت رمزگذاری شود و از طریق یک کانال امن به دستگاه ریموت ارسال شود. 

نحوه تونل زدن با SSH در V2ray

اگر قصد دارید با استفاده از نرم‌افزار V2ray دستگاه خود (ویندوز یا موبایل) را با یک SSH تونل کنید، نیاز به خرید سرور مجازی خارجی دارید. مقصد این سرور باید به اینترنت آزاد دسترسی داشته باشد. 

پس از خرید سرور مجازی، سرویس‌دهنده اطلاعات زیر را در اختیارتان قرار می‌دهد:

  • نام‌کاربری
  • رمزعبور
  • پورت 
  • آدرس IP سرور 

این اطلاعات را ذخیره و نرم‌افزار V2ray را دانلود و نصب کنید. سپس:

۱. در نرم‌افزار V2ray روی منوی Servers گزینهٔ Add [socks] server را انتخاب کنید. 

تصویری از فضای نرم‌افزار V2ray

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

  •  قسمت Remark را با نام دلخواه خود پر کنید. 
  • در بخش Address آی‌پی سرور را وارد کنید. 
  • پورت را یکی از گزینه‌های ۲۲/۸۰ درج کنید. 
  • نام‌کاربری و رمز عبور سرور را در فیلدهای آخر درج کنید. 
فرم اطلاعات سرور

۳. با فشردن دکمهٔ ok سرور شما ثبت می‌شود. می‌توانید با کلیک راست و Start تونل زدن را شروع کنید. 

آخرین توصیه‌ها دربارهٔ SSH 

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

اگر هنوز سوالی در ذهن دارید از بخش نظرات زیر همین پست از ما بپرسید و پاسخ بگیرید.

نعیمه نخعی

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

نظر شما راجع به این محتوا چیست؟

آخرین مطالب دسته بندی امنیت

2 دیدگاه

  1. سلام وقت شما بخیر. ممنون از مقاله خوبتون. تا جایی که فهمیدم داشتن ssh و تنظیم پورت ssh برای عدم دسترسی هکر ها به پسوردها مهمه. این ssh رو شما روی سرور اعمال میکنید یا باید مدیر وبسایت این کار رو انجام بده.

    1. سلام، ممنون از شما که بهمون فیدبک دادین.
      SSH به‌طور پیش‌فرض روی تمام سرورهای لینوکسی فعاله.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *