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

پروتکل SSH

پروتکل SSH که با نام Secure Shell یا Secure Socket Shell نیز شناخته می شود، یک پروتکل شبکه است که به افراد روشی ایمن برای دسترسی از یک کامپیوتر به کامپیوتر دیگر را از طریق یک شبکه ناامن ارائه می دهد. علاوه بر ارائه خدمات شبکه ایمن، SSH به مجموعه برنامه های کاربردی اشاره دارد که پروتکل SSH را اجرا می کنند. Secure Shell، احراز هویت پسورد قوی و احراز هویت کلید عمومی(Public Key) و همچنین ارتباطات رمزگذاری شده داده ای بین دو کامپیوتر متصل به یک شبکه باز مانند اینترنت را فراهم می کند.

با این کار از امنیت و یکپارچگی ارتباطات محافظت می کند. این یک گزینه امن برای پروتکل های ورود به سیستم غیر محافظت شده (مانندtelnet ، rlogin) و روش های انتقال فایل ناامن (مانند FTP) است. علاوه بر ارائه رمزگذاری قوی، به مدیران شبکه برای مدیریت سیستم ها و برنامه ها از راه دور به طور گسترده ای کمک می کند، به آنها امکان می دهد از طریق شبکه به کامپیوتر دیگری وارد شوند، دستورات را اجرا کنند و فایل ها را از یک کامپیوتر به کامپیوتر دیگر انتقال دهند.

پروتکل SSH هم به پروتکل شبکه رمزنگاری اشاره دارد و هم به مجموعه برنامه های کاربردی که آن پروتکل را اجرا می کنند. SSH با استفاده از مدل client-server، اتصال یک برنامه Client Secure Shell را به یک سرور SSH، یعنی پایان محل اجرای یک Session، متصل می کند. پیاده سازی های SSH اغلب شامل پشتیبانی از پروتکل های برنامه ای است که برای شبیه سازی ترمینال (terminal emulation) یا انتقال فایل (file transfer) استفاده می شود.

همچنین می توان از پروتکل SSH برای ایجاد تونل (tunnel) های ایمن برای سایر پروتکل های برنامه استفاده کرد. یک سرور SSH به طور پیش فرض، روی پورت 22 پروتکل TCP گوش می دهد. کلاینت ها و سرورهای SSH می توانند از تعدادی روش رمزگذاری استفاده کنند که بیشترین استفاده را از استاندارد رمزگذاری پیشرفته (AES) و Blowfish دارند.

 

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

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

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

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

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

یک نشست (ارتباط) واحد به دو جفت کلید عمومی نیاز دارد: یک جفت کلید عمومی برای تأیید اعتبار سیستم از راه دور به سیستم محلی و یک جفت کلید عمومی دوم برای احراز هویت سیستم محلی در سیستم از راه دور.

 

مسائل امنیتی SSH:

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

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

 

SSH vs. Telnet:

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

در حالی که از Telnet در درجه اول برای شبیه سازی ترمینال استفاده می شود، اما می توان از SSH برای شبیه سازی ترمینال و همچنین برای صدور دستورات از راه دور مانند RSH، انتقال فایل ها با استفاده از پروتکل انتقال فایل SSH (SFTP) و tunneling سایر موارد برنامه های کاربردی.

 

SSH vs. SSL/TLS:

پروتکل Transport Layer Security (TLS) که پروتکل Secure Sockets Layer (SSL) را به روز می کند، برای ایجاد امنیت در انتقال شبکه در لایه transport طراحی شده است. پروتکل SSH نیز در لایه transport و درست بالای آن عمل می کند، اما تفاوت های مهمی بین این دو پروتکل وجود دارد.

در حالی که هر دو برای تأیید اعتبار هاست ها به جفت کلید عمومی / خصوصی متکی هستند، در بخش TLS، سرور فقط با یک جفت کلید احراز هویت می شود. SSH برای تأیید اعتبار هر اتصال، از یک جفت کلید جداگانه استفاده می کند: یک جفت کلید برای اتصال از یک سیستم محلی به یک سیستم از راه دور و یک جفت کلید دوم برای تأیید اعتبار اتصال از راه دور به سیستم محلی. تفاوت دیگر بین SSH و TLS این است که TLS امکان رمزگذاری اتصالات بدون احراز هویت یا تأیید اعتبار بدون رمزگذاری را فراهم می کند. اما SSH تمام اتصالات را رمزگذاری و تأیید می کند.

SSH برای متخصصین فناوری اطلاعات و امنیت اطلاعات (infosec) با مکانیزمی ایمن، مدیریت از راه دور SSH clients را فراهم می کند. SSH به جای احراز هویت رمز عبور برای برقراری ارتباط بین سرویس گیرنده SSH و سرور، خود دستگاه ها را تأیید می کند. این کارکنان IT را قادر می سازد تا با سیستم های از راه دور ارتباط برقرار کرده و تنظیمات SSH را تغییر دهند، از جمله اضافه کردن یا حذف جفت کلید میزبان در فایل های هاست.

 

پیاده سازی SSH:

به عنوان یک پروتکل باز، پروتکل SSH برای اکثر سیستم عامل ها پیاده سازی شده است و اجرای متن باز OpenSSH یکی از مواردی است که معمولاً در لینوکس، یونیکس و سایر سیستم عامل های مبتنی بر توزیع نرم افزار Berkeley (BSD)، از جمله macOS اپل یافت می شود. OpenSSH برای اجرا در Windows PowerShell از سال 2015 ایجاد شد و در سال 2018، پشتیبانی اختیاری OpenSSH به ویندوز 10 اضافه شد. در حالی که SSH به طور پیش فرض در اکثر سیستم عامل های مشابه یونیکس به طور مستقیم قابل دسترسی است، نسخه پورت شده OpenSSH مایکروسافت در تنظیمات Windows وجود دارد.

PuTTY یکی دیگر از پیاده سازی های open source SSH است، گرچه این برنامه در حال حاضر برای ویندوز، macOS و Unix / BSD در دسترس است، اما PuTTY برای اجرا در ویندوز نوشته شده است و مدت هاست که یکی از گزینه های برتر استفاده از SSH در سیستم ویندوز است. بیشتر پیاده سازی های مجموعه SSH شامل سه برنامه کاربردی از قبیل: slogin (ورود ایمن)، ssh و scp (کپی امن) است که نسخه های ایمن برنامه های ناامن قبلی یونیکس شامل rlogin، rsh و rcp هستند. برای تأیید اعتبار سیستم از راه دور از رمزنگاری کلید عمومی استفاده می کند و در صورت لزوم، سیستم از راه دور را قادر می سازد تا کاربر را تأیید کند.

در حال حاضر ده ها پیاده سازی پروتکل SSH برای سیستم عامل های مختلف و تحت انواع مجوزهای open source و اختصاصی در دسترس است.

 

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

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

اساسی ترین شکل دستور پروتکل SSH فراخوانی برنامه و نام هاست مقصد یا آدرس IP است:

به عنوان مثال ssh server.mrshabake.com یا ssh 192.168.10.50

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

Ssh remote_host_userID@server.mrshabake.com  

همچنین از پروتکل SSH می توان برای صادر کردن یک دستور واحد درهاست از راه دور استفاده کرد و سپس خارج شد:

ssh mrshabake.com ls

این دستور، دستور Unix ls را اجرا می کند، که تمام محتویات فهرست فعلی را در هاست از راه دور لیست می کند. در حالی که این مثال پیش پا افتاده است، نشان می دهد که می توان از SSH برای اجرای دستورات  بیشتر در یک سیستم از راه دور استفاده کرد.

به عنوان مثال دستور scp، برای کپی کردن فایلها از یک کامپیوتر به کامپیوتر دیگر استفاده می شود و نسخه rcp با امنیت SSH است.

ssh-copy-id برای کپی، نصب و پیکربندی کلید SSH در سرور جهت خودکار سازی ورود بدون رمز و SSO استفاده می شود.

sftp برای کپی کردن فایلها از یک کامپیوتر به کامپیوتر دیگر استفاده می شود و یک نسخه امن تر از ftp (پروتکل اصلی انتقال فایل) است.

 

SSH tunneling:

SSH tunneling، همچنین به عنوان SSH port forwarding هم شناخته می شود، روشی است که کاربر را قادر می سازد یک تونل امن بین یک هاست محلی و یک هاست از راه دور باز کند.

SSH port forwarding تکنیکی برای هدایت ترافیک شبکه به یک آدرس پورت یا آدرس IP خاص است به طوری که یک هاست از راه دور به طور مستقیم توسط برنامه های موجود در هاست محلی قابل دسترسی است. ممکن است مقصد بر روی سرور SSH از راه دور باشد، یا آن سرور برای انتقال برروی یک میزبان از راه دور دیگر پیکربندی شده باشد.

SSH tunneling ابزار قدرتمندی برای مدیران IT است زیرا می توانند فایروال سازمانی را بدون شناسایی ترانزیت کنند. در نتیجه، ابزارهایی برای جلوگیری از استفاده غیر مجاز از تونل های SSH از طریق فایروال سازمانی در دسترس است.

 

آشنایی با 10 اصطلاح رایج در شبکه:

برگشت به بالا
محصول با موفقیت به سبد خرید اضافه شد.