پروتکل ssh چیست ؟

پروتکل ssh چیست ؟

در این مقاله قصد داریم به این موضوع بپردازیم که منظور از ssh چیست؟ پروتکل ssh که با نام های Secure Shell یا Secure Socket Shell معرفی می شود، یک نوع پروتکل شبکه که به کاربران به خصوص مدیران سیستم یک راه مطمئن برای دسترسی به رایانه از طریق یک شبکه نا امن فراهم می کند.

علاوه بر ارائه خدمات شبکه ایمن، ssh به مجموعه خدمات دیگری که پروتکل ssh یا ssh protocol را پیاده سازی می کنند، اشاره کرد. Secure shell تایید رمز عبوری قوی و قبول کردن اعتبار کلید عمومی ّهفشو همچنین ارتباطات داده رمز گذاری شده بین دو کامپیوتر که از طریق یک شبکه باز مثل اینترنت متصل می شوند، فراهم می کند.

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

لازم به ذکر است که ssh هم به پروتکل رمزگذاری شده و هم به مجموعه برنامه های کاربردی که آن پروتکل را پیاده سازی می کنند، اشاره دارد. ssh از یک مدل client-server استفاده می کند و یک برنامه سرویس دهنده Secure Shell را که در پایان نمایش جلسه است، به یک سرور ssh متصل می کند و این پایان محل اجرای جلسه یا session است. پیاده سازی پروتکل ssh اغلب شامل پشتیبانی از پروتکل های برنامه ای است که برای تقلید ترمینالی و انتقال فایل به کار گرفته می شود. همچنین ssh می تواند برای ایجاد تونل های ایمن برای سایر پروتکل های کاربردی، مثلا برای اجرای ایمن جلسات گرافیکی X Window System از راه دور مورد استفاده قرار می گیرد.

پروتکل ssh چگونه کار می کند؟

Secure Shell برای جایگزین کردن برنامه های تقلید یا وارد شدن به سیستم ترمینال نا امن مثل Telnet، rlogin (وارد شدن از راه دور) و rsh یا remote shell ایجاد شده است. ssh قادر به وارد کردن عملکردهای مشابهی (ورود به سیستم و اجرای جلسات ترمینال در سیستم های از راه دور) می کند. همچنین پروتکل ssh برنامه های انتقال فایل از قبیل پروتکل انتقال فایل (FTP) File Transfer Protocol و rcp (remote copy) را جایگزین می کند.

اساسی ترین کاربرد پروتکل ssh برای اتصال به یک هاست از راه دور برای یک جلسه ترمینال می باشد که دستور آن به صورت زیر است:

ssh UserName@SSHserver.example.com

این دستور باعث می شود client با استفاده از نام کاربری ID UserName به سروری با نام server.example.com متصل گردد.

اگر این اولین باری باشد که در مورد هاست محلی و سرور در حال مذاکره است، کاربر با اثر انگشت کلید عمومی هاست از راه دور از شما درخواست می کند و با وجود عدم ارتباط قبلی از وی خواسته می شود که ارتباط برقرار کند:

The authenticity of host ‘sample.ssh.com’ cannot be established.
DSA key fingerprint is 01:23:45:67:89:ab:cd:ef:ff:fe:dc:ba:98:76:54:32:10.
Are you sure you want to continue connecting (yes/no)?

پاسخ بله به موقع باعث می شود جلسه ادامه یابد و کلید میزبان در فایل local_hosts معروف سیستم محلی ذخیره شود که یک فایل پنهان می باشد و به طور پیش فرض در یک فهرست پوششی پنهان به نام /.ssh/known_hosts در فهرست خانه کاربر ذخیره می شود. پس از آنکه کلید هاست در فایل های Known_Host ذخیره شد، سیستم client می تواند دوباره بدون نیاز به مصوبات مجددا به طور مستقیم به آن سرور متصل شود و کلید هاست اتصال را تأیید می کند.

کاربردهای استفاده از پروتکل ssh

پروتکل ssh موجود در کلیه مراکز داده به طور پیش فرض با هر سرور یونیکس ، لینوکس و مک ارسال می شود. از اتصالات پروتکل ssh برای فراهم کردن امنیت بسیاری از انواع مختلفی از ارتباط های میان یک دستگاه و یک host از راه دور شامل دسترسی امن از راه دور به منابع، اجرای از راه دور دستورات، تحویل patch های نرم افزاری و به روزرسانی ها و سایر کارهای اداری یا مدیریتی استفاده می شود. علاوه بر ایجاد کانال امن بین رایانه های محلی و از راه دور، پروتکل ssh برای مدیریت روترها، سخت افزارهای سرور، سیستم عامل های مجازی سازی، سیستم عامل ها (OS) و سیستم های مدیریت داخلی و برنامه های انتقال فایل استفاده می شود.

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

برای دستیابی راحت و کار در مرزهای سازمانی، کلیدهای SSH تنها ورود به سیستم (SSO) single sign-on را فراهم می کنند تا کاربران بتوانند بدون تایپ کردن رمز عبور، هر بار بین حساب های خود حرکت کنند.

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

در حالی که می توان از پروتکلssh  با id و یک رمز عبور معمولی برای اعتبار استفاده کرد، پروتکل ssh برای تأیید اعتبار هاست ها به یکدیگر بیشتر به جفت های کلید عمومی وابسته است. کاربران هنوز باید از شناسه کاربری و رمز عبور خود – یا سایر روش های تأیید اعتبار – برای اتصال به خود هاست از راه دور استفاده کنند ولی دستگاه محلی و دستگاه از راه دور جداگانه به یکدیگر احراز می شوند.

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

قابلیت ها

عملکردهایی که پروتکل ssh فعال می کند شامل موارد زیر است:

  • دسترسی از راه دور به سیستم ها یا دستگاه های شبکه با قابلیت ssh را برای کاربران و همچنین امنیت فرایندهای خودکار را فراهم می کند.
  • جلسه های انتقال فایل امن و تعاملی
  • انتقال فایل به صورت خودکار و ایمن
  • صدور دستورات در دستگاه ها یا سیستم های از راه دور
  • مدیریت امن اجزای زیرساخت شبکه

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

تاریخچه

نسخه اول پروتکل ssh توسط Tatu Ylönen در سال ۱۹۹۵ میلادی منتشر و طراحی شد که در آن زمان محقق دانشگاه صنعتی هلسینکی بود و بعدا به راه اندازی SSH Communications Security، یک فروشنده امنیت سایبری مستقر در کشور فنلاند پرداخت. با گذشت زمان نقص های مختلفی در ssh-1 پیدا شده است و اکنون دیگر از این نسخه استفاده نمی شود و استفاده از آن بی خطر نیست. ssh-2 نسخه فعلی پروتکل های Secure Shell در سال ۲۰۰۶ میلادی به عنوان یک مشخصات Standards Track توسط Internet Engineering Task Force (IETF) به تصویب رسید. SSH-2 با SSH-1 سازگار نیست و از تبادل کلید Diffie-Hellman استفاده می کند و بررسی یکپارچه قوی تر که از کدهای تایید تصدیق پیام استفاده می کند تا امنیت را بهبود بخشد. کلاینت ها و سرورهای ssh می توانند از تعدادی روش رمزگذاری استفاده کنند که بیشتر Advanced Encryption Standard (AES) و Blowfish به کار گرفته می شوند. با این وجود، هیچ آسیب پذیری قابل بهره برداری شناخته شده ای در SSH-2 وجود ندارد، هرچند اطلاعات فاش شده توسط ادوارد اسنودن در سال ۲۰۱۳ میلادی نشان داد که آژانس امنیت ملی (NSA) ممکن است بتواند بخشی از ترافیک SSH را رمزگشایی کند.

امنیت پروتکل

شرکت ها باید جهت استفاده از پروتکل ssh از روش هایی برای مدیریت کلیدهای host ذخیره شده در سیستم های کلاینت استفاده کنند که این کلیدها می توانند به مرور زمان جمع شوند، به خصوص برای کارکنان فناوری اطلاعات (IT) که باید برای اهداف مدیریتی بتوانند به هاست های از راه دور دسترسی داشته باشند.

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

تفاوت اصلی بین پروتکل ssh و Telnet

پروتکل Telnet، یکی از اولین پروتکل های کاربردی اینترنت – دیگری FTP است – بود که برای آغاز و نگهداری یک session شبیه سازی ترمینال در host از راه دور به کار گرفته می شود. شایان به ذکر است که پروتکل ssh و Telnet از نظر عملکردی شبیه به هم هستند با این تفاوت اصلی که پروتکل ssh از رمزنگاری کلید عمومی برای تایید اعتبار نقاط پایانی زمان تنظیم یک جلسه ترمینال و همچنین برای رمزگذاری دستورات جلسه و خروجی استفاده می کند، در حالی که Telnet در درجه اول برای شبیه سازی ترمینال استفاده می شود.

قابل به توجه است که پروتکل ssh می تواند برای عمل شبیه سازی ترمینال شبیه به دستور rlogin و همینطور برای صادر کردن دستورات از راه دور مثل rsh، انتقال فایل ها با استفاده از پروتکل انتقال فایل (SFTP) ssh و تونل زدن به سایر برنامه های کاربردی دیگر مورد استفاده قرار بگیرد

تفاوت اصلی بین پروتکل ssh و SSL/TLS

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

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

SSH متخصصان فناوری اطلاعات و امنیت اطلاعات (infosec) را با داشتن مکانیزم ایمن برای مدیریت کلاینت های SSH از راه دور فراهم می کند. پروتکل ssh به جای نیاز به تایید رمز عبور برای برقراری ارتباط بین client و server دستگاه ها را تصدیق می کند. این امر کارکنان IT را قادر می سازد تا با سیستم های از راه دور ارتباط برقرار کرده و تنظیمات ssh از جمله اضافه یا حذف کردن جفت های کلیدی  هاست در فایل های Known_host را تغییر دهند.

پیاده سازی

پروتکل ssh، به عنوان یک پروتکل باز برای اکثر سیستم عامل های محاسباتی پیاده سازی شده است و اجرای OpenSSH منبع باز روشی است که بیشتر در Linux، Unix و سایر سیستم عامل های مبتنی بر Berkeley Software Distribution یا BSD از جمله macOS اپل یافت می شود. OpenSSH برای شروع در Windows PowerShell از سال ۲۰۱۵ میلادی آغاز شد و در سال ۲۰۱۸ گزینه پشتیبانی OpenSSH به ویندوز ۱۰ اضافه شد. در حالی که پروتکل ssh به طور پیش فرض در اکثر unix ها مانند سیستم عامل ها قابل دسترسی است، باید نسخه OpenSSH منتقل شده مایکروسافت به صراحت در برنامه تنظیمات ویندوز فعال شود.

PuTTY یکی دیگر از پیاده سازی های منبع باز پروتکل ssh می باشد و در حالی که در حال حاضر برای ویندوز، macOS و Unix/BSD در دسترس است، PuTTY در ابتدا برای اجرای روی سیستم عامل ویندوز نوشته شده است و مدت هاست که یکی از گزینه های برتر استفاده از پروتکل ssh در سیستم ویندوز می باشد. اکثر پیاده سازی مجموعه پروتکل ssh از قبیل سه برنامه کاربردی – slogin (secure login)، ssh و scp (secure copy) – که نسخه های مطمئن سرویس های یونیکس نا امن قبلی هستند: rlogin، rsh و rcp. پروتکل ssh از رمزگذاری کلید public برای تایید اعتبار کامپیوتر از راه دور استفاده می کند و کامپیوتر را از راه دور قادر می سازد در صورت لزوم، کاربر را تایید کند. در حال حاضر ده ها پیاده سازی پروتکل ssh برای سیستم عامل های مختلف و تحت انواع مجوزهای منبع باز و اختصاصی در دسترس است. در حالی پیاده سازی های گرافیکی پروتکل ssh نیز وجود دارد، این برنامه معمولا در خط فرمان فراخوانی می شود و یا به عنوان بخشی از یک اسکریپت اجرا می شود.

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

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

ssh server.example.org

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

ssh remote_host_userID@server.example.org  همچنین پروتکل ssh می تواند از خط فرمان استفاده کند تا یک فرمان واحد بر روی هاست از راه دور صادر شود و سپس خارج شود – به عنوان مثال: ssh example.org ls

این دستور، دستور Unix ls را اجرا می کند که کلیه محتوای فهرست موجود در هاست از راه دور را نشان می دهد. در حالی که این مثال بی اهمیت است، نشان می دهد که می توان از پروتکل ssh برای اجرای دستورات روی یک هاست از راه دور استفاده کرد. به عنوان مثال می توان دستوری را ساخت که به عنوان نمونه سرور اولیه را ارائه می دهد که به یک دستگاه از راه دور به یک فایل منفرد – یا منبع دیگر – دسترسی پیدا می کند و پس از دسترسی به فایل توسط هاست از راه دور مشخص شده، سرور را خاتمه می دهد.

علاوه بر پروتکل ssh اجرایی،SSH  دستورات اجرایی دیگری نیز دارد که در خط فرمان برای توابع اضافی استفاده می شود، شامل موارد زیر:

  • Sshd سرور ssh را آغاز می کند که منتظر دریافت درخواست اتصال ssh است و سیستم های مجاز را قادر می سازد تا به هاست محلی متصل شوند.
  • Ssh-keygen برنامه ای برای ایجاد یک جفت کلید احراز هویت جدید برای پروتکل ssh می باشد که می تواند برای ورود به سیستم به صورت اتوماتیک، اجرای SSO و احزار هویت هاست ها مورد استفاده قرار گیرد.
  • ssh-copy-id، برنامه ای است که برای کپی کردن، نصب و پیکربندی یک کلید SSH روی یک سرور برای اتوماتیک ورود به سیستم های بدون رمز و SSO استفاده می شود.
  • ssh-agent یک برنامه کمک کننده می باشد که کلیدهای هویت و عبارات عبور از آنها را ردیابی می کند – که از آن SSH کلید رمزنگاری گرفته می شود – و کاربر را قادر می سازد بدون نیاز به مجددا وارد کردن رمزهای عبور یا عبارات عبور، از کلیدهای شناسایی استفاده کند.
  • ssh-add برای اضافه کردن کلید به عامل احراز هویت SSH استفاده می شود و از ssh-agent برای پیاده سازی SSO با استفاده از SSH استفاده می شود.
  • scp برنامه ای است که برای کپی کردن فایل ها از یک کامپیوتر به رایانه دیگر استفاده می شود و یک نسخه rcp با امنیت SSH است.
  • sftp برنامه ای است که برای کپی کردن فایل ها از یک رایانه به رایانه دیگر استفاده می شود و یک نسخه SSH-  از FTP است که پروتکل اصلی انتقال فایل است.SFTP به مکانیسمی برای اشتراک گذاری فایل از طریق اینترنت تبدیل شده است و FTP و FTP / S (FTP Secure) را جایگزین می کند که یک پروتکل برای استفاده از FTP بر روی یک تونل SSL / TLS می باشد.

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

  1. رایج ترین کاربردهای استفاده از پروتکل ssh چیست؟

از جمله رایج ترین کاربردهای استفاده از پروتکل ssh می توان به موارد زیر اشاره کرد:

  • دسترسی از راه دور به سیستم ها یا دستگاه های شبکه
  • جلسه های انتقال فایل امن و تعاملی
  • انتقال فایل به صورت خودکار و ایمن
  • مدیریت امن اجزای زیرساخت شبکه
  • صدور دستورات در دستگاه ها یا سیستم های از راه دور
  1. چه شباهتی بین پروتکل ssh و SSL/TLS وجود دارد؟

هر دو پروتکل ssh و SSL/TLS در لایه انتقال یا transport layer قرار دارند.

  1. پروتکل ssh روی چه سیستم عامل هایی قابل پیاده سازی است؟

پروتکل ssh روی اکثر سیستم عامل های محاسباتی قابل پیاده سازی است اما بیشتر در Linux، Unix و سایر سیستم عامل های مبتنی بر Berkeley Software Distribution یا BSD از جمله macOS اپل یافت می شود.

آخرین نوشته ها

تماس با ما

  •  کرج، شاهین ویلا، بلوار امام خمینی ، خیابان نهم شرقی ، برج شاهین ،طبقه اول واحد2
  •  91014618
  •   info@shopingserver.net

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

reza emam

reza emam

مطالب مرتبط