Secure Shell برای جایگزینی برنامههای شبیه سازی ناامن یا ورود به سیستم، مانند Telnet، rlogin (ورود از راه دور) و rsh (پوسته از راه دور) ایجاد شده است. همچنین جایگزین برنامههای انتقال فایل مانند پروتکل انتقال فایل (FTP) و rcp (کپی از راه دور) میشود. در این مقاله می خوانید که SSH چیست و چگونه کار میکند؟
SSH چیست؟
SSH که با نامهای Secure Shell یا Secure Socket Shell نیز شناخته میشود، یک پروتکل شبکه است که به کاربران، بهویژه مدیران سیستم، روشی امن برای دسترسی به رایانه از طریق یک شبکه ناامن را ارائه میدهد.
SSH همچنین به مجموعه ابزارهایی اشاره دارد که پروتکل SSH را پیاده سازی میکنند. Secure Shell احراز هویت از طریق رمز عبور، احراز هویت از طریق کلید عمومی و همچنین ارتباطات داده رمزگذاری شده بین دو کامپیوتری که از طریق یک شبکه باز مانند اینترنت به هم متصل میشوند را فراهم میکند.
علاوه بر ارائه رمزگذاری قوی، SSH به طور گسترده توسط مدیران شبکه برای مدیریت سیستمها و برنامهها از راه دور استفاده میشود و آنها را قادر میسازد تا از طریق شبکه به رایانه دیگری وارد شوند، دستورات را اجرا کنند و فایلها را از یک رایانه به رایانه دیگر منتقل کنند. SSH میتواند برای ایجاد تونلهای امن برای سایر پروتکلهای برنامه نیز استفاده شود.
SSH چگونه کار میکند؟
این پروتکل به صورت کلاینت-سرور کار میکند اگر با مفهوم کلاینت چیست آشنا نیستید در مقاله ی دیگری به آن پرداخته ایم، به این معنی که اتصال توسط کلاینت SSH که به سرور SSH متصل میشود، برقرار میشود. کلاینت SSH فرآیند راهاندازی اتصال را هدایت میکند و از رمزنگاری کلید عمومی برای تأیید هویت سرور SSH استفاده میکند. پس از مرحله راه اندازی، پروتکل SSH از الگوریتمهای رمزگذاری و هش متقارن قوی برای اطمینان از حفظ حریم خصوصی و یکپارچگی دادههایی که بین مشتری و سرور رد و بدل میشود، استفاده میکند.
شکل زیر یک جریان راه اندازی ساده شده از اتصال پوسته ایمن را نشان میدهد.
روش کار SSH با استفاده از مدل کلاینت-سرور است تا امکان احراز هویت دو سیستم راه دور و رمزگذاری دادههایی که بین آنها ارسال میشود را فراهم کند.
SSH به طور پیش فرض روی پورت TCP 22 کار میکند (اگرچه پورت SSH را میتوان در صورت نیاز تغییر داد). میزبان (سرور) به پورت ۲۲ (یا هر پورت اختصاص داده شده SSH) برای اتصالات ورودی گوش میدهد. این اتصال امن را با احراز هویت مشتری انجام میدهد.
دو مرحله برای برقراری یک اتصال وجود دارد – اول اینکه هر دو سیستم باید روی استانداردهای رمزگذاری برای محافظت از ارتباطات آینده توافق کنند و دوم اینکه کاربر باید خود را احراز هویت کند. اگر اعتبارنامهها مطابقت داشته باشند، به کاربر اجازه دسترسی داده می شود.
موارد استفاده از SSH
SSH که در همه مراکز داده وجود دارد به طور پیش فرض در هر سرور یونیکس، لینوکس و مک ارسال میشود. اتصالات SSH برای ایمن سازی انواع مختلف ارتباطات بین یک ماشین محلی و یک میزبان راه دور، از جمله دسترسی از راه دور ایمن به منابع، اجرای دستورات از راه دور، تحویل نرم افزاری و به روز رسانیها و سایر وظایف اداری یا مدیریتی استفاده میشود.
علاوه بر ایجاد یک کانال امن بین کامپیوترهای محلی و راه دور، SSH برای مدیریت روترها، سخت افزار سرور، پلتفرمهای مجازی سازی، سیستم عاملها (OSes) و مدیریت داخلی سیستمها و برنامههای کاربردی انتقال فایل استفاده میشود.
SSH در حالی که نقشهای محوری در مدیریت هویت و مدیریت دسترسی ایفا میکند، فراتر از احراز هویت از طریق یک اتصال رمزگذاری شده انجام میدهد. تمام ترافیک SSH رمزگذاری شده است. چه کاربران در حال انتقال یک فایل، مرور وب و یا اجرای یک فرمان باشند، تمام اقدامات آنها به صورت خصوصی انجام میشود. کاربردهای معمول پروتکل SSH به صورت زیر هستند:
- فراهم کردن دسترسی ایمن برای کاربران و فرآیندهای خودکار
- انتقال فایلها به صورت ایمن
- صدور دستورات از راه دور
- مدیریت زیرساخت شبکه و سایر اجزای سیستم حیاتی.
تاریخچه SSH
اولین نسخه SSH در سال ۱۹۹۵ و توسط Tatu Ylönen طراحی شد و بعداً SSH Communications Security، یک فروشنده امنیت سایبری مستقر در فنلاند را راه اندازی کرد. با گذشت زمان، نقصهای مختلفی در SSH-1 یافت شد. آن نسخه در حال حاضر منسوخ شده و برای استفاده ایمن نیست.
SSH-2، نسخه فعلی پروتکلهای Secure Shell، در سال ۲۰۰۶ توسط کارگروه مهندسی اینترنت (IETF) به عنوان پروتکل استاندارد پذیرفته شد. SSH-2 با SSH-1 سازگار نیست و از تبادل کلید Diffie-Hellman استفاده میکند. این پروتکل یکپارچگی قویتری از کدهای احراز هویت پیام برای بهبود امنیت ارائه میدهد. پیشنهاد می شود مقاله putty چیست را نیز در این راستا مطالعه کنید.
مقایسه SSH و Telnet
Telnet یکی از اولین پروتکل های برنامه کاربردی اینترنت بود که برای شروع و حفظ یک جلسه شبیه سازی در یک میزبان راه دور استفاده میشود.
SSH و Telnet از نظر عملکردی مشابه هستند، با این تفاوت که پروتکل SSH از رمزنگاری کلید عمومی برای تأیید اعتبار نقاط پایانی هنگام تنظیم یک جلسه و همچنین برای رمزگذاری دستورات جلسه و خروجی استفاده می کند.
در حالی که Telnet عمدتاً برای شبیه سازی ترمینال استفاده میشود، SSH میتواند برای انجام شبیه سازی ترمینال – مشابه دستور rlogin – و همچنین برای صدور دستورات از راه دور مانند rsh، انتقال فایلها با استفاده از پروتکل SSH File Transfer Protocol (SFTP) و موارد دیگر استفاده شود.
مقایسه SSH و SSL/TLS
پروتکل (TLS) که به روزرسانی پروتکل SSL است، برای تامین امنیت برای انتقال شبکه در لایه انتقال طراحی شده است. پروتکل SSH نیز در لایه انتقال یا درست بالای آن عمل میکند، اما تفاوتهای مهمی بین این دو پروتکل وجود دارد.
- در حالی که هر دو به جفت کلید عمومی/خصوصی برای احراز هویت هاست متکی هستند، فقط سرور با یک جفت کلید تحت TLS احراز هویت میشود. SSH از یک جفت کلید جداگانه برای احراز هویت هر اتصال استفاده میکند: یک جفت کلید برای اتصال از یک ماشین محلی به یک ماشین راه دور و یک جفت کلید دوم برای تأیید اعتبار اتصال از ماشین راه دور به ماشین محلی.
- تفاوت دیگر بین SSH و TLS این است که TLS امکان رمزگذاری اتصالات را بدون احراز هویت یا احراز هویت بدون رمزگذاری فراهم میکند. SSH همه اتصالات را رمزگذاری و احراز هویت میکند.
- SSH به متخصصان IT و امنیت اطلاعات مکانیزمی امن برای مدیریت کلاینتهای SSH از راه دور ارائه میدهد. SSH به جای نیاز به احراز هویت رمز عبور برای راه اندازی ارتباط بین سرویس گیرنده SSH و سرور، خود دستگاهها را احراز هویت میکند. در انتها پیشنهاد می کنیم مقاله ssl چیست را نیز مطالعه کنید.