SSH چیست؟ SSH که با نامهای Secure Shell یا Secure Socket Shell نیز شناخته میشود، یک پروتکل شبکه است که به کاربران بهویژه مدیران سیستم، راهی امن، برای دسترسی به رایانه از طریق یک شبکه ناامن میدهد. SSH همچنین به مجموعه ابزارهایی اشاره دارد که پروتکل SSH را پیادهسازی میکنند. در ادامه این نوشته برای دریافت پاسخ سوال پروتکل SSH چیست؟ با ما همراه باشید.
SSH چیست؟
Secure Shell احراز هویت رمز عبور قوی، احراز هویت کلید عمومی و همچنین ارتباطات داده رمزگذاری شده بین دو کامپیوتری که از طریق یک شبکه باز مانند اینترنت به هم متصل میشوند را فراهم میکند. علاوه بر ارائه رمزگذاری قوی، SSH به طور گسترده توسط مدیران شبکه برای مدیریت سیستمها و برنامههای کاربردی از راه دور استفاده میشود و آنها را قادر میسازد تا از طریق شبکه به رایانه دیگری وارد شوند، دستورات را اجرا کنند و فایلها را از یک رایانه به رایانه دیگر منتقل کنند.
SSH هم به پروتکل شبکه رمزنگاری اشاره دارد و هم به مجموعه ابزارهایی که آن پروتکل را پیادهسازی میکنند. پیادهسازی SSH اغلب شامل پشتیبانی از پروتکلهای کاربردی مورد استفاده برای شبیهسازی ترمینال یا انتقال فایل است.
SSH همچنین میتواند برای ایجاد تونلهای امن برای سایر پروتکلهای برنامه استفاده شود، به عنوان مثال، برای اجرای ایمن جلسات گرافیکی X Window System از راه دور. یک سرور SSH، به طور پیشفرض، به پورت 22 استاندارد پروتکل کنترل انتقال (TCP) گوش میدهد.
پروتکل SSH چگونه کار میکند؟
Secure Shell برای جایگزینی برنامههای شبیهسازی ترمینال ناامن یا ورود به سیستم، مانندTelnet، rlogin (ورود از راه دور) و rsh(پوسته از راه دور) ایجاد شده است .SSH همان عملکردها مانند ورود به سیستم و اجرای جلسات ترمینال در سیستمهای راه دور را فعال میکند. پروتکل SSH همچنین جایگزین برنامههای انتقال فایل مانند پروتکل انتقال فایل (FTP) و( rcp) کپی از راه دور میشود.
این دستور باعث میشود که کلاینت سعی کند با استفاده از شناسه کاربری 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)?
پاسخ مثبت به درخواست باعث ادامه جلسه میشود و کلید میزبان در فایل Know_hosts سیستم محلی ذخیره میشود. این یک فایل مخفی است که به طور پیشفرض در یک پوشه مخفی به نام /.ssh/known_hosts در فهرست اصلی کاربر ذخیره میشود. هنگامی که کلید میزبان در فایل Known_hosts ذخیره شد، سیستم کلاینت میتواند مستقیماً بدون نیاز به هیچ گونه تأییدیه، مستقیماً به آن سرور متصل شود. کلید میزبان اتصال را تأیید میکند.
اگر شما اقدام به خرید VPS کرده باشید و در زمان خرید، انتخاب شما خرید سرور لینوکس بوده باشد، پس حتما برای دسترسی به shell نیاز به استفاده از پروتکل SSH دارید.
کاربرد SSH
پروتکل SSH که در همه مراکز داده وجود دارد به طور پیشفرض با هر سرور یونیکس، لینوکس و مک ارسال میشود. اتصالات SSH برای ایمنسازی انواع مختلف ارتباطات بین یک ماشین محلی و یک میزبان راه دور، از جمله دسترسی از راه دور ایمن به منابع، اجرای دستورات از راه دور، تحویل وصلههای نرمافزاری، بهروزرسانیها و سایر وظایف اداری یا مدیریتی استفاده شده است.
علاوه بر ایجاد یک کانال امن بین کامپیوترهای محلی و راه دور، پروتکل SSH برای مدیریت روترها، سخت افزار سرور، پلتفرمهای مجازی سازی، سیستم عاملها OSesو مدیریت داخلی سیستمها و برنامههای کاربردی انتقال فایل استفاده میشود.
Secure Shell برای اتصال به سرورها، ایجاد تغییرات، انجام آپلود و خروج یا با استفاده از ابزارها یا مستقیماً از طریق ترمینال استفاده میشود. کلیدهای SSH را میتوان برای خودکارسازی دسترسی به سرورها استفاده کرد و اغلب در اسکریپتها، سیستمهای پشتیبانگیری و ابزارهای مدیریت پیکربندی استفاده میشود.
کلیدهای SSH به گونهای طراحی شدهاند که راحت باشند و در سراسر مرزهای سازمانی کار کنند، یک ورود به سیستم (SSO) را ارائه میدهند تا کاربران بتوانند هر بار بدون تایپ رمز عبور، بین حسابهای خود حرکت کنند. SSH در حالی که نقشهای محوری در مدیریت هویت و مدیریت دسترسی ایفا میکند، چیزی بیش از احراز هویت از طریق یک اتصال رمزگذاری شده انجام میدهد. تمام ترافیک SSH رمزگذاری شده است. چه کاربران در حال انتقال یک فایل، مرور وب یا اجرای یک فرمان باشند، اقدامات آنها خصوصی است.
در حالی که امکان استفاده از SSH با شناسه کاربری و رمز عبور معمولی به عنوان اعتبار وجود دارد، SSH اغلب به جفتهای کلید عمومی برای احراز هویت میزبانها برای یکدیگر متکی است. تک تک کاربران هنوز باید از شناسه کاربری و رمز عبور خود یا سایر روشهای احراز هویت برای اتصال به خود میزبان راه دور استفاده کنند اما ماشین محلی و ماشین راه دور به طور جداگانه به یکدیگر احراز هویت میشوند. این با ایجاد یک جفت کلید عمومی منحصر به فرد برای هر میزبان در ارتباط انجام میشود. یک جلسه واحد به دو جفت کلید عمومی نیاز دارد: یک جفت کلید عمومی برای احراز هویت ماشین راه دور به ماشین محلی و یک جفت کلید عمومی دوم برای احراز هویت ماشین محلی به ماشین راه دور.
قابلیتهای Secure Shell
توابعی که SSH فعال میکند شامل موارد زیر است:
• دسترسی از راه دور ایمن به سیستمها یا دستگاههای شبکه دارای SSH برای کاربران و همچنین فرآیندهای خودکار
• جلسات انتقال فایل امن و تعاملی
• انتقال خودکار و ایمن فایل
• صدور ایمن دستورات در دستگاهها یا سیستمهای راه دور
• مدیریت ایمن اجزای زیرساخت شبکه
پروتکل SSH میتواند به صورت تعاملی برای فعال کردن جلسات ترمینال مورد استفاده قرار گیرد و باید به جای برنامه Telnet با امنیت کمتر استفاده شود. SSH همچنین معمولاً در اسکریپتها و سایر نرم افزارها استفاده میشود تا برنامهها و سیستمها را برای دسترسی از راه دور و ایمن به دادهها و منابع دیگر قادر سازد.
تاریخچه پروتکل SSH
اولین نسخه SSH در سال 1995 توسط Tatu Ylönen طراحی شد که در آن زمان محققی در دانشگاه فناوری هلسینکی بود و بعداً SSH Communications Security، یک فروشنده امنیت سایبری مستقر در فنلاند را راهاندازی کرد.
با گذشت زمان، نقصهای مختلفی در SSH-1 یافت شد. آن نسخه در حال حاضر منسوخ شده و برای استفاده امن نیست. SSH-2، نسخه فعلی پروتکلهای Secure Shell، در سال 2006 توسط کارگروه مهندسی اینترنت IETF به عنوان مشخصات آهنگ استاندارد پذیرفته شد. SSH-2 با SSH-1 سازگار نیست و از تبادل کلید Diffie-Hellman استفاده میکند.
کلاینتها و سرورهای SSH میتوانند از تعدادی روش رمزگذاری استفاده کنند که بیشتر مورد استفاده قرار میگیرد مانند استاندارد رمزگذاری پیشرفته (AES) و Blowfish. هیچ آسیبپذیری قابل سوء استفاده شناخته شدهای در SSH-2 وجود ندارد، اگرچه اطلاعاتی که ادوارد اسنودن در سال 2013 به بیرون درز کرد نشان میدهد که آژانس امنیت ملی (NSA) ممکن است بتواند برخی از ترافیک SSH را رمزگشایی کند.
مسائل امنیتی Shell امن
شرکتهایی که از پروتکل SSH استفاده میکنند باید راههایی برای مدیریت کلیدهای میزبان ذخیرهشده در سیستمهای مشتری بیابند. این کلیدها میتوانند در طول زمان به ویژه برای کارکنان فناوری اطلاعات (IT) که نیاز به دسترسی به میزبانهای راه دور برای اهداف مدیریتی دارند، جمع شوند.
از آنجایی که دادههای ذخیره شده در یک فایل SSH Know_hosts را میتوان برای دسترسی به سیستمهای راه دور مورد استفاده قرار داد، سازمانها باید از وجود این فایلها آگاه باشند و باید یک فرآیند استاندارد برای حفظ کنترل بر روی فایلها، حتی پس از خارج شدن سیستم داشته باشند.
توسعه دهندگان باید هنگام ترکیب دستورات یا توابع پروتکل SSH در یک اسکریپت یا نوع دیگری از برنامه مراقب باشند. در حالی که امکان صدور یک فرمان SSH شامل شناسه کاربری و رمز عبور برای احراز هویت کاربر ماشین محلی به حسابی در میزبان راه دور وجود دارد، انجام این کار ممکن است اعتبار را در معرض یک مهاجم با دسترسی به کد منبع قرار دهد.
SSH در مقابل Telnet
Telnet یکی از اولین پروتکلهای برنامه کاربردی اینترنت بود، دیگری FTP است. 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 و امنیت اطلاعات (infosec) مکانیزمی امن برای مدیریت کلاینتهای SSH از راه دور ارائه میدهد. SSH به جای نیاز به احراز هویت رمز عبور برای راهاندازی ارتباط بین سرویس گیرنده و سرور SSH، خود دستگاهها را احراز هویت میکند. این کار کارکنان فناوری اطلاعات را قادر میسازد تا با سیستمهای راه دور ارتباط برقرار کنند و پیکربندیهای SSH را تغییر دهند، از جمله افزودن یا حذف جفتهای کلید میزبان در فایل Known_hosts.
پیاده سازی پروتکل SSH
SSH یک پروتکل باز است. برای اکثر پلتفرمهای محاسباتی پیادهسازی شده است. اجرای OpenSSH منبع باز یکی از رایجترین موارد در لینوکس، یونیکس و سایر سیستمعاملهای مبتنی بر توزیع نرمافزار برکلی (BSD)، از جمله macOS اپل است.
OpenSSH از سال 2015 برای اجرا در Windows PowerShell منتقل شد. در سال 2018، پشتیبانی اختیاری OpenSSH به ویندوز 10 اضافه شد. در حالی که SSH به طور پیشفرض در اکثر سیستمعاملهای شبه یونیکس مستقیماً قابل دسترسی است، نسخه پورتشده OpenSSH مایکروسافت باید بهصراحت در ویندوز فعال شود. برنامه تنظیمات PuTTY یکی دیگر از اجرای متن باز SSH است. در حالی که در حال حاضر برای Windows، macOS و Unix/BSD در دسترس است، PuTTY در ابتدا برای اجرا در ویندوز نوشته شده بود. مدت هاست که یکی از گزینههای برتر برای استفاده از SSH در سیستم ویندوز بوده است.
اکثر پیاده سازیهای مجموعه پروتکل SSH شامل سه ابزار است:
- ورود به سیستم (ورود امن)
- Ssh
- Scp (کپی امن)
اینها نسخههای امن ابزارهای ناامن قبلی یونیکس هستند: rlogin، rsh و rcp. SSH از رمزنگاری کلید عمومی برای تأیید اعتبار رایانه راه دور استفاده میکند و رایانه راه دور را قادر میسازد تا در صورت لزوم کاربر را تأیید کند. در حال حاضر دهها پیاده سازی SSH برای پلتفرمهای مختلف و تحت انواع مجوزهای منبع باز و اختصاصی موجود است.
دستورات SSH
در حالی که پیاده سازیهای گرافیکی SSH وجود دارد، برنامه معمولاً در خط فرمان فراخوانی میشود یا به عنوان بخشی از یک اسکریپت اجرا میشود. اجرای دستور ssh به تنهایی، بدون هیچ آرگومان مانند میزبان مقصد یا شناسه کاربر، لیستی از پارامترها و گزینههای دستور SSH را برمیگرداند. ابتداییترین شکل دستور SSH فراخوانی برنامه و نام میزبان مقصد یا آدرس پروتکل اینترنت (IP) است:
ssh server.example.org
این به مقصد، server.example.org متصل میشود. میزبان مقصد با درخواست رمز عبور برای شناسه کاربری حسابی که مشتری تحت آن در حال اجرا است، پاسخ خواهد داد. به عبارت دیگر، اگر شناسه کاربری در حال استفاده jsmith باشد، میزبان راه دور یک رمز عبور مرتبط با حساب کاربری jsmith را در هاست راه دور میخواهد. در بسیاری از موارد، شناسه کاربری برای میزبان راه دور متفاوت خواهد بود، در این صورت دستور باید با شناسه کاربر میزبان راه دور صادر شود، مانند این:
پروتکل 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 است.
تونل زنی پروتکل SSH چیست؟
تونل زنی پروتکل SSH که به عنوان ارسال پورت SSH نیز شناخته میشود، تکنیکی است که کاربر را قادر میسازد تا یک تونل امن بین یک میزبان محلی و یک میزبان راه دور باز کند. ارسال پورت SSH، ترافیک شبکه را به یک آدرس پورت/IP خاص هدایت میکند تا یک میزبان راه دور مستقیماً توسط برنامههای میزبان محلی قابل دسترسی باشد. مقصد ممکن است روی سرور SSH راه دور باشد، یا آن سرور ممکن است برای ارسال به یک میزبان راه دور دیگر پیکربندی شده باشد. تونلهای SSH ابزارهای قدرتمندی برای مدیران فناوری اطلاعات و همچنین عوامل مخرب هستند، زیرا میتوانند از فایروال سازمانی بدون شناسایی عبور کنند. در نتیجه، ابزارهایی برای جلوگیری از استفاده غیرمجاز از تونلهای SSH از طریق فایروال شرکتی وجود دارد.
نرمافزار PUTTY ابزاری برای پشتیبانی از SSH
بعد از خرید سرور مجازی ایران یا خارج نیاز به نرم افزاری دارید که از پروتکلهای مختلفی از جمله پروتکل SSH پشتیبانی کند. برای این کار نرمافزارهای مختلفی وجود دارد که نرم افزار PUTTY یکی از بهترینهای آنهاست. PUTTY در هر دو پلتفرم ویندوز و یونیکس قابل استفاده است. نرمافزار PUTTY را میتوانید بهصورت رایگان از اینجا دانلود کنید.