SSH مخفف عبارت «Secure Shell» (پوسته امن) می باشد. SSH یک پروتکل طراحی شده برای برقراری اتصال امن میان کاربر (Client) و سرور (Server) می باشد.در گذشته کاربران برای ارتباط با سرور، از راههای غیر امنی همچون سرویس Telnet استفاده میکردند که همین موضوع باعث ایجاد مشکلات جدی و دزدیده شدن اطلاعات کاربران در حین تبادل اطلاعات با سرور مقصد میشد.همین امر باعث شد تا توسعهدهندههای لینوکس به دنبال روشی امنتر و قابل اطمینان تری برای ارتباط با سرور شوند بدین منظور سرویس ssh رونمایی شد.در حال حاضر پروتکل SSH در ۲ ورژن SSH1 و SSH2 در تمامی سیستمعاملها در دسترس میباشد. بهطور پیشفرض امکان اتصال به سرور از طریق هر دو ورژن وجود دارد مگر اینکه در کانفیگ سرور تنظیم شده باشد که تنها از نسخه ۱ یا مثلاً ۲ پشتیبانی نماید.
پروتکل SSH چگونه کار میکند؟
Secure Shell برای جایگزینی برنامههای شبیهسازی ترمینال ناامن یا ورود به سیستم، مانندTelnet، rlogin (ورود از راه دور) و rsh(پوسته از راه دور) ایجاد شده است .SSH همان عملکردها مانند ورود به سیستم و اجرای جلسات ترمینال در سیستمهای راه دور را فعال میکند. پروتکل SSH همچنین جایگزین برنامههای انتقال فایل مانند پروتکل انتقال فایل (FTP) و( rcp) کپی از راه دور میشود.
ssh UserName@SSHserver.example.com
این دستور باعث میشود که کلاینت سعی کند با استفاده از شناسه کاربری 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 در سال ۱۹۹۵ و توسط Tatu Ylönen طراحی شد و بعداً SSH Communications Security، یک فروشنده امنیت سایبری مستقر در فنلاند را راه اندازی کرد. با گذشت زمان، نقصهای مختلفی در SSH-1 یافت شد. آن نسخه در حال حاضر منسوخ شده و برای استفاده ایمن نیست.
SSH-2، نسخه فعلی پروتکلهای Secure Shell، در سال ۲۰۰۶ توسط کارگروه مهندسی اینترنت (IETF) به عنوان پروتکل استاندارد پذیرفته شد. SSH-2 با SSH-1 سازگار نیست و از تبادل کلید Diffie-Hellman استفاده میکند. این پروتکل یکپارچگی قویتری از کدهای احراز هویت پیام برای بهبود امنیت ارائه میدهد.
کلید SSH چیست؟
کلید SSH در واقع همان کد امضای دیجیتال است که اتصالات و ارسال و دریافت دادهها بر اساس آن کدگذاری (Cryptography) و به اصطلاح Hash میشود تا اطلاعات با امنیت منتقل شوند. به عبارت دیگر این کلید نوعی امضای دیجیتال است که در ابتدای اتصال برای هر دو کامپیوتر به صورت خودکار تنظیم میشود تا در حین ارسال اطلاعات با این امضای دیجیتال رمزگذاری شوند و حین دریافت با همین امضای دیجیتال اطلاعات بازگشایی و استفاده شوند.
در واقع امضای دیجیتال رشته کدی است که لا به لای اطلاعات پخش میشود و کل اطلاعات را ناخوانا میکند. همین امر باعث ایجاد یک لایه امنیتی درون اطلاعات میشود. پروتکل SSH اطلاعات را با ترکیبی از الگوریتمهای RSA Public Key ، SHA-256 و SHA-512 رمزگذاری میکند. با این روش اطلاعات رمزگذاری شده با امضای RSA خارج از محدوده اتصال دو کامپیوتر به هیچ عنوان قابل خواندن نیست. بنابراین اگر حتی یک هکر حرفهای هم بتواند یک شاخه از تونل اتصال به دست آورد، نمیتواند از اطلاعات دانلود شده بدون داشتن امضای دیجیتال استفاده کند و عملاً کاری از پیش نمیبرد.
کلیدهای SSH در پوشه .ssh در پوشه ی اصلی کاربر ذخیره میشوند. از این کلیدها در احراز هویت عمومی “Public Key” سیستم استفاده میشوند. البته نوع خصوصیتر این کلیدها “User Keys” نام دارند که برای احراز هویت خود کاربر به کار میروند. کلید SSH روش جایگزین احراز هویت ناامن rhosts است. روش rhosts آسیب پذیر و ناامن بود و هکرها میتوانستند به راحتی رمزنگاری را هک کنند.
RSA Public Key چیست ؟
RSA Public Key (Rivest–Shamir–Adleman) از اولین شیوههای رمزنگاری به روش کلید عمومی (Public Key Cryptography PKC) است که به صورت گسترده برای تأمین امنیت انتقال داده استفاده میشود. در این چنین سیستمهای رمزنگاری، کلید رمزگذاری عمومی است؛ به این معنی که از کلیدهایی استفاده میشود که به صورت پیش فرض برای همه دستگاهها استفاده شده است. این مدل از رمزگذاری با رمزگذاری خصوصی متفاوت است، با این حال ترکیب این رمزگذاری با الگوریتمهای دیگر میتواند اطلاعات را کاملاً حفاظت کند. امضای دیجیتال RSA در موارد مختلفی مانند رمزنگاری کدهای اپلیکیشنها و برنامههای کامیپوتری نیز کاربرد دارد.
کاربرد پروتکل SSH چه هستند ؟
اساساً این پروتکل برای ارتباط امن و تأیید امنیت اتصالات کاربرد دارد. با توجه به امکاناتی که به این پورت اضافه شده است، میتوان گفت که SSH مانند یک فایروال عمل میکند و میتواند جلوی رخنههای امنیتی را بگیرد. تا کنون هیچ گزارشی مبنی بر ناامن بودن پروتکل -SSH-2 گزارش نشده و به همین دلیل با اطمینان کامل میتوان گفت که این پروتکل یکی از بهترین راههای ارتباط بین کامپیوترها است. از امکانات و کاربردهای SSH میتوان به موارد زیر اشاره کرد:
- امکان تایید کاربران
- ایجاد تونل امن در بستر TCP/IP
- انتقال خودکار اتصالات برقرار شده
- امکان تایید خارجی کاربران
- انتقال فایل امن و محافظت شده
منظور از رمزنگاری در ssh چیست
RSA Public Key چیست ؟
با اتصال به SSH در سرور لینوکس در واقع اطلاعات ردوبدل شده بین کاربران و سرور به صورت رمزنگاری شده تبادل شده و دزدیده شدن اطلاعات در مسیر ارتباط هیچ منفعتی برای نفوذگر نداشته و اطلاعات ربوده شده غیرقابل خواندن میباشد.
رمزنگاری اطلاعات تبادلی بین کلاینت و سرور از نوع RSA public key و مدل احراز Client-Server میباشد به این معنی که اطلاعات تبادل شده از هر دو سمت فقط با وجود کلید تبادلی دارای معنا خواهد بود در غیر این صورت غیرقابل استفاده خواهد بود.
RSA Public Key چیست ؟
RSA Public Key (Rivest–Shamir–Adleman) از اولین شیوههای رمزنگاری به روش کلید عمومی (Public Key Cryptography PKC) است که به صورت گسترده برای تأمین امنیت انتقال داده استفاده میشود. در این چنین سیستمهای رمزنگاری، کلید رمزگذاری عمومی است؛ به این معنی که از کلیدهایی استفاده میشود که به صورت پیش فرض برای همه دستگاهها استفاده شده است. این مدل از رمزگذاری با رمزگذاری خصوصی متفاوت است، با این حال ترکیب این رمزگذاری با الگوریتمهای دیگر میتواند اطلاعات را کاملاً حفاظت کند. امضای دیجیتال RSA در موارد مختلفی مانند رمزنگاری کدهای اپلیکیشنها و برنامههای کامیپوتری نیز کاربرد دارد.