قبل از آشنایی با پروتکل SSH لازم است تفاوت های آن را با پروتکل Telnet که قبل از پیدایش SSH بسیار مورد استفاده بوده را مورد برسی قرار دهیم.
SSH و Telnet چیست؟
دو پروتکل شبکه شناخته شده برای مدیریت کردن تجهیزات شبکه و سرورها از راه دور هستند.
با استفاده از این ابزارها می توانید بصورت پیکربندی های مربوط به دستگاه های عنوان شده را براحتی و از طریق خط فرمانی که ارائه می کنند انجام دهید. این دو ابزار در عمل هیچ تفاوتی با همدیگر ندارند و شما هر کاری که توسط SSH می توانید انجام دهید با استفاده از Telnet قادر به انجام آن هستید.
یکی از مهم ترین خطراتی است که هر کاربر متصل به اینترنت در یک شبکه عمومی را تهدید می کند. هکرها می توانند با ده ها نرم افزار ساده و کوچک، تمام اطلاعات ارسالی یا دریافتی روی کامپیوتر شما را از طریق پورت های باز شنود و حتی ذخیره یا دستکاری کنند. اگر برایتان پیش آمده که آدرس یک سایت را وارد مرورگر اینترنت کرده اید، اما سایت دیگری باز شده یا پنجره دانلود نرم افزاری گشوده شده است، مطمئن باشید اطلاعات شما شنود و دستکاری می شود.
پروتکل SSH به شما کمک می کند که اطلاعات را به صورت امن و رمزنگاری شده روی شبکه و اینترنت مبادله کنید و از شنود یا استراق سمع در امان باشید.
تفاوت بین SSH و Telnet در چیست؟
اصلی ترین و مهمترین تفاوت بحث امنیت است.
Telnetهیچگونه مکانیزم امنیتی ندارد ، رمز عبور شما زمانیکه از Telnet برای اتصال به دستگاه مورد نظر استفاده می کنید بصورت رمزنگاری نشده یا در اصطلاح فنی Clear Text رد و بدل می شود و یک هکر می توانید این رمز عبور را به سادگی در شبکه شنود کرده و اطلاعات احراز هویتی شما را بدست بیاورد. اما زمانیکه شما از SSH استفاده می کنید رمز عبور شما بصورت رمزنگاری شده منتقل می شود و مهاجم نمی تواند محتویات آن را شناسایی و رمز عبور را پیدا کند.
- SSH و Telnet هر دو به یک منظور مورد استفاده قرار می گیرند.
- SSH بسیار بسیار امن تر از Telnet است.
- SSH داده ها را رمزنگاری می کند در حالیکه Telnet داده ها را بصورت رمزنگاری نشده ارسال می کند.
- SSH از ساختار Public Key برای احراز هویت استفاده می کند اما Telnet هیچگونه ساختار احراز هویتی ندارد.
- SSH باعث ایجاد شدن Overhead و مصرف بیشتر پهنای باند به نسبت Telnet می شود.
- امروزه Telnet بصورت عمده ای توسط SSH جایگزین شده است.
SSh چیست؟
SSHمخفف کلمه Secure shell یک پروتکل امن برای ایجاد ارتباط بین (Client) سرویس گیرنده و (Server) سرویس دهنده است. SSH قبل از ارسال اطلاعات انها را در سمت کاربر (بدون دخالت کاربر) رمزگزاری کرده وبه سرویس گیرنده می فرستد.
بنابراین SSH یک پروتکل است که به شما کمک می کند که به سرورتان از راه دور متصل شوید. مثلا فرض کنید یک سرور در یک کشور خارجی دارید و می خواهید آن را مدیریت کنید. برای این کار یکی از بهترین روش ها اتصال به سرور راه دور خود با استفاده از پروتکل SSH است.
به طور ساده، SSH یک متد یا پروتکلی است که میان دو کامپیوتر یک ارتباط امن و غیر قابل نفوذ ایجاد می کند. با استفاده از SSH دو کامپیوتر راه دور روی یک شبکه یا اینترنت می توانید اطلاعات را به صورت رمزشده و غیر قابل شنود مبادله کنید.
در حقیقت SSH با ایجاد یک تونل یا یک خط ارتباطی امن میان این دو کامپیوتر از نفوذ هکرها جلوگیری می کند و حتی اگر هکری بتواند اطلاعات را شنود کند، قادر به رمز گشایی یا درک آن ها نیست به این روش، Tunneling SSH نیز می گویند.
پروتکل SSH کاربردهای فراوانی دارد که در ذیل به برخی از آنها اشاره شده است :
- اتصال به نشست گرافیکی در سیستم راه دور
- اجرای دستور در سیستم راه دور
- انتقال دادهها میان پایانهها
- قابلیت فشردهسازی اطلاعات در حین انتقال، برای بهبود ترافیک باند
- احراز هویت بوسیله کلید عمومی (جایگزین سبک رمز عبور)
- ایجاد پروتکل SFTP از ترکیب پروتکلهای SSH و FTP برای انتقال مطمئن دادهها
- ترکیب آن با پروتکل rsync برای ایجاد فایلهای پشتیبان به صورت امن
- مدیریت و خودکارسازی ثبت وقایع در سیستم راه دور
- سوار کردن پوشه از سیستم راه دور
معماری SSH :
پروتکلSSH-2 دارای معماری داخلی واضح با لایههای کاملاً جدا از هم میباشد.
این معماری بهSSH انعطافپذیری قابل توجهی میدهد تا به عنوان برنامهای مطمئن استفاده شود. این لایهها به شرح زیر میباشند:
- لایهی اتصال
- لایه احراز هویت
- لایه انتقال
لایه اتصال در SSH :
این لایه، خط مشی و مفهوم کانالها را تعریف میکند. منظور از کانال، همان مسیر ارسال درخواستهای متقاضی به سرویسدهنده است. پروتکل SSH میتواند از چندین کانال به طور همزمان (مانند انتقال داده در هر دو جهت در یک ارتباط) استفاده کند.
نحوه مدیریت کانالها و درخواستها در این لایه قرار میگیرد. انواع کانالها عبارتند از:
- Shell : برای درخواست ترمینال
- Direct-TCP/IP : برای اتصالات متقاضی به سرویس دهنده
- Forwarded-TCP/IP : برای اتصالات سرویس دهنده به متقاضی
لایه احراز هویت در SSH :
این لایه وظیفه احراز هویت متقاضی را برعهده دارد و میتواند از روشهای متعددی برای احراز هویت استفاده کند. در واقع هنگامی که پروتکل SSH از متقاضی درخواست رمز عبور میکند، احراز هویت آن در این لایه صورت میگیرد.
روشهای احراز هویت که در این لایه قابل استفاده است، عبارتند از:
- Password ساده ترین روش احراز هویت، روش کلمه عبور است که البته توسط تمام برنامهها پیادهسازی نمیشود.
- Public key عمومیترین روش احراز هویت است که به عنوان یک مدل مرجع مورد استفاده قرار میگیرد.
- Keyboard-Interactive روشی انعطافپذیر است که در آن سرویسدهنده SSH یک یا چندین اعلان برای ورود اطلاعات ارسال میکند و متقاضی در مقابل با زدن کلیدهایی، به سرویس دهنده پاسخ میدهد.
- GSSAPI روشهای احراز هویت به این سبک، قابل توسعه هستند و برای یک ارتباط قدرتمند در پروتکل SSH ایجاد شدهاند. این مدل ها معمولا به همراه پروتکلSSH تجاری پیادهسازی میشود تا در سازمانهای خاص مورد استفاده قرار گیرد.
لایه انتقال در SSH :
این لایه، با مبادله کلیدهای اولیه انتقال، احراز هویت، رمزکردن، فشردهسازی و وارسی جامع سروکار دارد. اندازه بستههای این لایه که ارتباط آن را با دیگر لایهها برقرار میکند، ۳۲۷۶۸ بایت است.
تبادل دوباره کلیدهای انتقال که معمولاً به ازای هر گیگابایت و یا هر ساعت انجام میشود از دیگر وظایف این لایه است.
اصطلاحات SSH :
- SSH با حروف بزرگ به طور کلی به معنی پروتکل SSH است.
- ssh با حروف کوچک به نرم افزار کلاینت سمت کاربر گفته میشود.
- SSHD در واقع Daemon سرویس SSH در لینوکس است.
- SSH1در واقع اولین ویرایش SSH است.
- SSH2نسخه تجاری و غیر رایگان محصول شرکت Tectia است.
- Open SSHنسخه متن باز Open-source یا رایگان SSH
نحوه استفاده از SSH :
فرض میکنیم شما سرور خود را خریداری کردید و حالا آمادگیِ آن را دارید که آن را پیکربندی کنید. برای اتصال و وارد شدن به سرور در حالت گرافیکی، باید از نرم افزارهای مربوط به این کار استفاده کنید.
نرم افزار Putty یک نرم افزار سمت Client است. به این معنی که یک سرویس دهنده در سطح شبکه باید وجود داشته باشد، تا این نرم افزار بتواند به آن متصل شود. سرویس دهندۀ ما همان سرویس SSH است که همینک روی سرور ما به حالت اجرا است و اگر سرور خاموش باشد و یا سرویس SSH به درستی اجرا نباشد، قادر به اتصال به سرور از طریق پروتکل SSH نخواهیم بود.
شاید برای شما این سؤال پیش بیاید که تفاوت بین نسخه های مختلف SSH چیست، در حقیقت این دو نسخه بیشتر در حوزه تائید کاربر (User Authentication) هست که با هم متفاوت هستند. SSH-1 گستره وسیع تری از متدهای تائید کاربر را پوشش می دهد، اما از اتصال همزمان در اکثر اونها پشتیبانی نمی کند. هر چند در SSH-2 شاهد متدهای RhostsRSA ، Kerberos و TIS نیستیم، اما در مقابل با بهره گیری از متد قدرتمند PublicKey و توسعه اون (DSA, RSA*, OpenPGP) توانسته است کاملا نیاز کاربران را رفع نماید. ضمن این که از اتصال همزمان نیز کاملاً پشتیبانی می کند. تفاوت مهم دیگر SSH-1 در قیاس با SSH-2 بحث امنیت است که در برخی اتصال ها فرصت حملات ورودی (Insertion Attack) را ایجاد می نماید.
مانند اف تی پی، برای اتصال به SSH هم روش های مختلفی وجود دارد. اما اگر از سیستم عامل ویندوز برای اتصال به سرور لینوکسی خود استفاده می کنید، نرم افزار PuTTY این کار را برای شما آسان کرده است. وقتی که PuTTY را اجرا کنید، صفحه ی پیکربندی نمایان می شود. ابتدا باید نام میزبان (آدرس آی پی) و سرویس دهنده SSH که میخواهید به آن متصل شوید (مثلا example.com) را وارد کنید. اگر فقط آدرس IP را میدانید،میتوانید فقط از آدرس IP استفاده کنید. اگر متناوباً از این تنظیمات استفاده مینمایید، میتوانید یک پروفایل PuTTY ایجاد کرده و این تنظیمات را در آن ذخیره نمایید.