کار با سرور، کلاینت و کلیدهای SSH
بهروزرسانی: ۲۷ فروردین ۱۴۰۳
ویژه انتشار در وبسایت دیدگاه
مقدمه
SSH یا Secure Shell یک پروتکل امن برای اتصال از راه دور به سرورهای لینوکسی است. این پروتکل امکان اجرای دستورات، مدیریت سرویسها و پیکربندی سیستم را از طریق یک کانال رمزنگاریشده فراهم میکند.
در این راهنمای جامع از دیدگاه، با مفاهیم اصلی SSH، روشهای اتصال، احراز هویت با کلید، تنظیمات سمت سرور و کلاینت، تونلسازی و تکنیکهای حرفهای کار با SSH آشنا میشوید. این محتوا بهصورت مرجع سریع و کاربردی تهیه شده است.
SSH چیست و چگونه کار میکند؟
SSH یک اتصال امن مبتنی بر مدل Client–Server است.
در سمت سرور، سرویسی به نام SSH Daemon (sshd) روی یک پورت مشخص (بهصورت پیشفرض 22) در حال اجراست و منتظر درخواست اتصال میماند.
در سمت کاربر، SSH Client وظیفه برقراری ارتباط، ارسال اطلاعات احراز هویت و اجرای دستورات را بر عهده دارد. تمام دادهها در طول این ارتباط بهصورت رمزنگاریشده منتقل میشوند.
پس از اتصال موفق، کاربر وارد یک محیط Shell متنی روی سرور میشود و تمام دستورات واردشده در ترمینال محلی، روی سرور اجرا خواهند شد.
روشهای احراز هویت در SSH
SSH بهطور کلی از دو روش برای احراز هویت استفاده میکند:
1. احراز هویت با رمز عبور
این روش ساده اما ناامنتر است. اگرچه ارتباط رمزنگاریشده است، اما حسابهایی که با رمز عبور قابل ورود هستند، هدف اصلی حملات Brute Force و رباتها محسوب میشوند.
2. احراز هویت با کلید SSH (روش پیشنهادی)
در این روش از یک جفت کلید رمزنگاریشده شامل کلید عمومی و کلید خصوصی استفاده میشود.
-
کلید عمومی روی سرور ذخیره میشود
-
کلید خصوصی فقط روی سیستم کاربر باقی میماند
-
بدون داشتن کلید خصوصی، ورود غیرممکن است
این روش بهمراتب امنتر و استاندارد توصیهشده برای مدیریت سرورهاست.
ساخت کلید SSH
برای ایجاد یک جفت کلید RSA روی سیستم محلی:
کلیدها بهصورت پیشفرض در مسیر زیر ذخیره میشوند:
-
~/.ssh/id_rsaکلید خصوصی -
~/.ssh/id_rsa.pubکلید عمومی
میتوانید برای کلید خود Passphrase تعیین کنید تا حتی در صورت دسترسی به فایل کلید خصوصی، استفاده از آن بدون عبارت عبور ممکن نباشد.
ایجاد کلید با امنیت بالاتر (4096 بیت)
تغییر یا حذف Passphrase کلید خصوصی
برای این کار دانستن Passphrase فعلی الزامی است. در صورت فراموشی، تنها راه، ساخت کلید جدید خواهد بود.
مشاهده Fingerprint کلید SSH
Fingerprint برای شناسایی یکتای کلیدها و بررسی صحت آنها استفاده میشود.
انتقال کلید عمومی به سرور
روش پیشنهادی: ssh-copy-id
پس از وارد کردن رمز عبور، کلید عمومی شما به فایل زیر اضافه میشود:
انتقال بدون ssh-copy-id
انتقال دستی کلید
-
نمایش کلید عمومی:
-
ایجاد پوشه SSH روی سرور:
-
افزودن کلید به authorized_keys:
اتصال به سرور با SSH
اجرای یک دستور بدون ورود به شل:
اتصال به پورت غیر پیشفرض:
استفاده از فایل تنظیمات SSH در کلاینت
نمونه تنظیم:
اتصال ساده:
استفاده از SSH Agent
برای جلوگیری از وارد کردن مکرر Passphrase:
فوروارد کردن کلید SSH (Agent Forwarding)
این قابلیت اجازه میدهد از داخل یک سرور به سرور دیگر متصل شوید، بدون کپی کلید خصوصی.
تنظیمات امنیتی سمت سرور
غیرفعالسازی ورود با رمز عبور
در فایل:
سپس:
تغییر پورت SSH
محدود کردن کاربران مجاز
یا مبتنی بر گروه:
غیرفعالسازی ورود root
تونلسازی SSH
Local Tunnel
Remote Tunnel
Dynamic Tunnel (SOCKS Proxy)
کنترل اتصال با Escape Code
قطع اتصال گیر کرده:
فرستادن SSH به پسزمینه:
جمعبندی
SSH یکی از حیاتیترین ابزارهای مدیریت سرور است. استفاده صحیح از کلیدها، تنظیمات امنیتی مناسب و قابلیتهایی مانند تونلسازی و Agent Forwarding میتواند امنیت و بهرهوری شما را به شکل چشمگیری افزایش دهد.
این راهنما توسط دیدگاه برای مدیران سیستم، توسعهدهندگان و کاربران حرفهای لینوکس تهیه شده است.

