پروتکل SSH که این روزها حسابی مورد استفاده قرار میگیرد، یک پروتکل شبکه است که راهی امن برای دسترسی به یک رایانه از طریق یک شبکه ناامن را میدهد. به بیانی دیگر پروتکل SSH یک روش ارتباطی برای برقراری ارتباط بین Client و Server است. مدیران شبکه میتوانند از طریق SSH از راه دور به سیستمها و سرورها وارد شده و عملیات مختلفی را انجام دهند؛ از جمله اجرای دستورات سیستمی، انتقال فایل، و مدیریت سیستم. Secure Shell Protocol یا همان پروتکل SSH ورود به یک رایانه دیگر برای اجرای دستورات (Command) و یا انتقال فایل را میسر میکند.
با پروتکل SSH کاربران میتوانند از طریق اینترنت، اطلاعات را بهصورت رمزنگاری شده ارسال و دریافت کنند. SSH از الگوریتمهای رمزنگاری ایمن برای پیشگیری از نفوذ و تغییر دادن دادهها در حین ارسال بهره میبرد. اس اس اچ به دلیل ویژگیهای امنیتی و قابلیت اطمینان، به عنوان یکی از پروتکلهای محبوب در محیطهای شبکه و سرور شناخته میشود.
در این مقاله سعی میکنیم تا یک راهنمای کامل از پروتکل SSH یا Secure Shell را ارائه دهیم تا شما در دنیای پیچیده امنیت شبکه با این پروتکل برجسته آشنا شوید.
پروتکل SSH چیست؟
در دنیای پیچیده فناوری اطلاعات، پروتکل Secure Shell نقش یک ابزار کلیدی در برقراری ارتباط امن و محافظت از اطلاعات را دارد. از نظر فنی، SSH به عنوان یک پروتکل لایهی امنیتی در مدل OSI عمل میکند. همچنین از الگوریتمهای مانند RSA و Diffie-Hellman برای تبادل کلیدهای رمزنگاری استفاده مینماید. مدیران شبکه قادر هستند از راه دور دستورات را در محیط خط فرمان اجرا کرده و از طریق SCP و SFTP فایلها را انتقال دهند. علاوهبر این مدیریت امنیتی سرورها و رایانهها را ممکن میسازد. با تبادل کلیدهای رمزنگاری به روشهای ایمن، SSH جلوی نفوذهای احتمالی و دسترسی غیرمجاز را میگیرد و برای مدیران امکان مانیتورینگ دقیق و کنترل دستگاهها را فراهم میکند. SSH همچنین امکان تونل زنی یا ارسال پورت (Port Forwarding) را فراهم میکند.
اگر بخواهیم کاربرد SSH را با مثال بیان کنیم؛ تصور کنید که مدیر یک شرکت هستید و برای یک مدت حضور فیزیکی در شرکت ندارید. با ارائه دستورات از راه دور به کارکنان هر بخش، سعی میکنید تا در زمان عدم حضورتان خللی در انجام امور پیش نیاید. SSH نیز بههمین صورت است. در گذشته پروتکلهای مدیریت از راه دور مانند Telnet، دستورات مدیران را به شکلی منتقل میکردند که همه میتوانستند ببینند. اما SSH کاملا برخلاف Telnetعمل میکند و از اینرو Secure Shell نامیده میشود.
پروتکل SSH چه کاربردی دارد؟
طی یک حادثه هک در شبکه دانشگاهی فنلاند، SSH توسط Ylonen در سال 1995 توسعه یافت. این حادثه هک سبب شد تا Ylonen به مطالعه رمزنگاری و ایجاد راه حلی بپردازد که بتواند خودش برای ورود از راه دور از طریق اینترنت به صورت ایمن استفاده کند. هنگامی که Ylonen کار بر روی SSH را آغاز کرد؛ تعدادی از دوستان او درمورد ویژگیهای این پروتکل ایده پردازی کردند. سرانجام سه ماه بعد، در جولای 1995، Ylonen اولین نسخه را به صورت متن باز (Open SSH) منتشر کرد. با گذشت زمان نسخه SSH-2 توسعه یافت و هیچ آسیب پذیری خاصی در SSH-2 وجود ندارد. اگرچه اطلاعاتی که ادوارد اسنودن در سال 2013 افشا کرد؛ نشان میدهد که آژانس امنیت ملی (NSA) ممکن است بتواند برخی از ترافیک SSH را رمزگشایی کند. با این وجود، از مزایای استفاده از SSH میتوان به موارد زیر اشاره کرد:
ارتباطات رمزگذاری شده از راه دور
پروتکل SSH اتصال بین یک کلاینت و سرور را بهصورت ریموت برقرار کرده و از روشهای رمزگذاری استفاده میکند که رمزگشایی را برای افراد خارجی دشوار کند.
توانایی تونل زدن
در شبکه، تونل زدن یا Tunneling یک روش برای جابهجایی Packet ها در یک شبکه با استفاده از پروتکل یا مسیری است که معمولاً قادر به استفاده از آن نیستند. تمام دادههایی که از یک شبکه عبور میکنند به قطعات کوچکتری تقسیم میشوند که به آن packet گفته میشود. تونلهای SSH از تکنیکی به نام Port forwarding برای ارسال بستهها از یک ماشین به ماشین دیگر استفاده میکنند. پورت فورواردینگ را میتوان مشابه ارسال پیام بین دو نفر در نظر گرفت. این فرآیند، بستههای دادهای را که به آدرس IP و پورت یک دستگاه هدایت میشوند، به یک آدرس IP و پورت در دستگاه دیگر ارسال میکند. در واقع، پورت فورواردینگ به عنوان یک مکانیزم مسیردهی بستههای داده از یک دستگاه به دیگری عمل میکند، این امر از طریق تغییر مسیر مسیریابی بستهها در شبکه انجام میشود.
کنترل دسترسی از طریق پروتکل SSH
مدیران سیستم میتوانند از SSH برای مدیریت و پیکربندی دسترسی از راه دور به سرورها استفاده نمایند. SSH به آنها این امکان را میدهد تا به صورت امن اقدامات مدیریتی انجام دهند و نظارت کاملی داشته باشند.
کاربرد متنوع نشاندهنده این است که SSH به عنوان یک پروتکل بسیار حیاتی در مدیریت و حفاظت از سیستمهای شبکه استفاده میشود. این پروتکل با ارائه ارتباطات رمزگذاری شده و احراز هویت، در طیف گستردهای از برنامهها، از جمله ابزارهای مدیریتی و امنیتی، به مدیران سیستم این امکان را میدهد که ارتباطات امن و مطمئنی را برقرار کنند.
انتقال امن فایلها
پروتکل کپی امن (SCP) و پروتکل انتقال فایل SSH (SFTP) توسط SSH پشتیبانی میشود و کاربران را قادر میسازد تا فایلها را بین ماشینهای محلی و راه دور انتقال دهند.
پیاده سازی VPN با استفاده از پروتکل SSH
SSH میتواند به عنوان بلوک ساختمانی برای پیاده سازی VPN ها استفاده شود و به کاربران اجازه میدهد تا اتصالات شبکه ایمن بین سیستم ها یا شبکههای راه دور ایجاد کنند. این روش به مدیران امکان مدیریت امنیتی بیشتر و افزایش حریم خصوصی در ارتباطات شبکه را میدهد. بنابراین، این روش معمولاً در مواقعی که نیاز به ارتباط امن و انتقال اطلاعات از راه دور با شبکههای دیگر وجود دارد، به کار میرود.
نحوه عملکرد پروتکل SSH
SSH بهصورت سیستم کلاینت-سرور عمل میکند، به این معنی که اتصال توسط کلاینت SSH برقرار میشود که به سرور SSH متصل میشود. کلاینت SSH مسئول هدایت فرآیند ایجاد اتصال است و از رمزنگاری کلید عمومی برای تأیید هویت سرور SSH استفاده میکند. پس از مراحل راهاندازی، پروتکل SSH از الگوریتمهای قوی رمزنگاری و هش متقارن برای اطمینان از حفظ حریم خصوصی و یکپارچگی دادههایی که بین Client و سرور جابجا میشوند، استفاده میکند. این الگوریتمها از امکانات رمزنگاری پیشرفته جهت ایجاد ارتباط امن و پایدار بین دو طرف استفاده میکنند، تا اطلاعات منتقل شده محافظت شده و امنیت ارتباط به بهترین شکل تضمین شود.
در اتصال SSH، هر دو طرف ارتباط از یک جفت کلید عمومی/خصوصی برخوردار هستند. این کلیدها برای احراز هویت هر طرف در فرآیند اتصال به کار میروند. این ویژگی به SSH امکان میدهد که از امنیت بالایی برخوردار باشد و از تأیید هویت دوطرفه (در هر دو جهت) استفاده کند. مقایسه با HTTPS نشان میدهد که در اکثر پیادهسازیها، HTTPS تنها هویت وبسرور را تأیید میکند و تأیید هویت Client به این شکل محدود میشود. این تفاوتها شامل محدودیت دسترسی Client به خط فرمان سرور در محیط HTTPS میشود. همچنین، در بعضی موارد، ممکن است فایروالها SSH را مسدود کنند در حالی که این اتفاق تقریباً هرگز در مورد HTTPS رخ نمیدهد.
SSH از چه پورتی استفاده میکند؟
SSH به طور پیشفرض از پورت 22 برای ارتباطات امن خود استفاده میکند. این پورت به عنوان پورت استاندارد SSH شناخته میشود و برای برقراری ارتباط امن بین کلاینت و سرور SSH به کار میرود. استفاده از یک پورت خاص مشخص که در این حالت پورت 22 است، به عنوان یک استاندارد کمک میکند تا امکان تعیین مشخصات اتصال SSH و تشخیص سرورها و کلاینتهای معتبر افزایش یابد. این پورت معمولاً در تنظیمات پیشفرض بسیاری از سرورها فعال است، اما میتواند در صورت نیاز توسط مدیران سیستم تغییر یابد.
گاهیاوقات، فایروالها ممکن است تا دسترسی به پورتهای خاص را در سرورهای پشت فایروال محدود کنند، اما معمولاً پورت 22 را برای ارتباطات امن باز میگذارند. از این رو، استفاده از SSH به عنوان یک راه ارتباطی بسیار مفید و عملی است، زیرا این پروتکل به کاربران این امکان را میدهد تا حتی در شرایطی که دسترسی به پورتهای مختلف محدود شده است، از طریق پورت استاندارد SSH (پورت 22) به سرورها دسترسی یابند و ارتباط امنی برقرار کنند.
نحوه اتصال به سرور از طریق SSH
SSH یک پروتکل باز است و برای اکثر پلتفرمهای محاسباتی پیادهسازی شده است. OpenSSH، که یک پروژه منبع باز است، یکی از رایجترین پیادهسازیهای SSH برای لینوکس، یونیکس و سایر سیستمعاملهای مبتنی بر توزیع نرمافزار برکلی (BSD)، از جمله macOS اپل است.
یکی دیگر از نرمافزارهای رایج PuTTY است. PuTTY یک نرمافزار مشهور و مفید است که به عنوان یک کلاینت SSH، Telnet، و Serial ارائه شده است. این نرمافزار، که برای سیستمعامل ویندوز توسعه یافته است، امکان اتصال به سرورها و دستگاهها را از طریق پروتکلهای مختلف را فراهم میکند. ساده بودن کار با PuTTY سبب محبوبیت این ابزار شده است. جالب است که بدانید PuTTY یکی از بهترین گزینهها برای استفاده از SSH در سیستم ویندوز بوده است.
نصب SSH در Mac
در macOS کلاینت SSH معمولا بهصورت پیش فرض نصب است. ترمینال را باز کنید و با دستور زیر این مورد را چک کنید:
ssh -v
این دستور، نسخه SSH نصب شده را نشان میدهد. برای استفاده از برنامهای مانند OpenSSH از دستور Homebrew زیر استفاده کنید:
brew install openssh
برای فعال کردن ورود از راه دور سرور SSH در macOS، مراحل زیر را طی کنید:
- به تنظیمات سیستم بروید.
- در منوی سمت چپ روی General کلیک کنید.
- روی Sharing کلیک کنید.
4. برای اجازه دسترسی SSH به دستگاه، Remote Login را فعال کنید.
نصب SSH در Linux
در برخی از توزیعهای لینوکس، SSH بهطور پیش فرض نصب نشده است. برای رفع این مشکل میتوان نصب OpenSSH یا یک راه حل رابط کاربری گرافیکی، مانند PuTTY برای اوبونتو را در نظر داشت. برای نصب OpenSSH به دسترسی به ترمینال روی سرور و رایانهای که برای اتصال استفاده میکنید؛ نیاز است. مراحل نصب و راهاندازی به شرح زیر است:
- برای نصب Client Component، یکی از دستورات زیر را در سیستم کلاینت اجرا کنید:
برای سیستمهای مبتنی بر دبیان/اوبونتو:
sudo apt install openssh-client
برای سیستم های مبتنی بر Red Hat (مانند CentOS یا Fedora):
sudo dnf install openssh-clients
sudo yum install openssh-clients
2. سپس، server component را روی دستگاه سرور نصب کنید:
برای سیستمهای مبتنی بر دبیان/اوبونتو:
sudo apt install openssh-server
برای سیستم های مبتنی بر Red Hat (مانند CentOS یا Fedora):
sudo dnf install openssh-server
sudo yum install openssh-server
3. پس از نصب کامپوننتها، سرویس SSH به صورت خودکار راه اندازی میشود. برای مشاهده وضعیت سرویس از کامند زیر استفاده کنید:
systemctl status sshd
نصب SSH در Windows
SSH بهصورت پیش فرض در سیستمهای وندوزی تعبیه نشده است. از نسخه 10 به بعد، ویندوز شامل OpenSSH شده است. برای فعال کردن SSH مراحل زیر را انجام دهید:
- Settings -> Apps & features -> Optional features
2. روی دکمه Add a feature کلیک کنید.
3. اپلیکیشن OpenSSH را جستجو و نصب کنید.
نحوه اتصال از طریق SSH
پس از نصب و راه اندازی SSH Client و SSH Server، میتوانید یک اتصال امن از راه دور برقرار کنید. برای اتصال به سرور مراحل زیر را انجام دهید:
1. پنجره خط فرمان/ترمینال را باز کنید و دستور ssh زیر را اجرا کنید:
ssh [username]@[host_ip_address]
نام کاربری و آدرس IP میزبان را ارائه دهید؛ اگر نام کاربری با ماشین محلی یکسان است، آن را از دستور حذف کنید. برای ارزیابی صحت نصب SSH، سعی کنید اتصال SSH به localhost برقرار کنید.
2. هنگام ارتباط اولیه با سرور، یک پیام تأیید اتصال ظاهر خواهد شد. با تایپ کلمه “Yes” و فشار دادن Enter، اتصال به سرور از راه دور در دستگاه محلی تأیید میشود.
3. هنگامی که از شما خواسته شد؛ رمز عبور را وارد کنید و Enter را فشار دهید. هنگام تایپ کردن، توجه داشته باشید که صفحه نمایش کاراکترها را نشان نمیدهد.
نکته قابل توجه دیگر این است که اگر رایانهای که میخواهید به آن متصل شوید در همان شبکه است؛ بهتر است به جای آدرس IP عمومی از یک آدرس IP خصوصی استفاده کنید.
علاوه بر این، اطمینان حاصل کنید که پورت TCP به درستی به درخواستهای اتصال گوش داده و تنظیمات ارسال پورت صحیح باشند. شماره پورت پیشفرض 22 میباشد مگر اینکه پیکربندی آن تغییر یافته باشد. همچنین، میتوانید شماره پورت را بعد از آدرس IP میزبان اضافه کنید.