رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
راهنمای جامع SSH

راهنمای جامع SSH

SSH یک پروتکل امن برای اتصال از راه دور به سرورهای لینوکسی است که اجرای دستورات و مدیریت سیستم را از طریق کانال رمزنگاری‌شده ممکن می‌کند. امن‌ترین روش ورود، استفاده از کلیدهای SSH است که شامل کلید عمومی روی سرور و کلید خصوصی روی کلاینت می‌شود. با تنظیمات امنیتی مناسب، تغییر پورت، غیرفعال‌سازی ورود root و تونل‌سازی، می‌توان امنیت و بهره‌وری مدیریت سرور را به‌طور چشمگیری افزایش داد.

فهرست مطالب

کار با سرور، کلاینت و کلیدهای 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-keygen

کلیدها به‌صورت پیش‌فرض در مسیر زیر ذخیره می‌شوند:

  • ~/.ssh/id_rsa کلید خصوصی

  • ~/.ssh/id_rsa.pub کلید عمومی

می‌توانید برای کلید خود Passphrase تعیین کنید تا حتی در صورت دسترسی به فایل کلید خصوصی، استفاده از آن بدون عبارت عبور ممکن نباشد.

ایجاد کلید با امنیت بالاتر (4096 بیت)

 
ssh-keygen -b 4096

تغییر یا حذف Passphrase کلید خصوصی

 
ssh-keygen -p

برای این کار دانستن Passphrase فعلی الزامی است. در صورت فراموشی، تنها راه، ساخت کلید جدید خواهد بود.


مشاهده Fingerprint کلید SSH

 
ssh-keygen -l

Fingerprint برای شناسایی یکتای کلیدها و بررسی صحت آن‌ها استفاده می‌شود.


انتقال کلید عمومی به سرور

روش پیشنهادی: ssh-copy-id

 
ssh-copy-id username@server_ip

پس از وارد کردن رمز عبور، کلید عمومی شما به فایل زیر اضافه می‌شود:

 
~/.ssh/authorized_keys

انتقال بدون ssh-copy-id

 
cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

انتقال دستی کلید

  1. نمایش کلید عمومی:

 
cat ~/.ssh/id_rsa.pub
  1. ایجاد پوشه SSH روی سرور:

 
mkdir -p ~/.ssh
  1. افزودن کلید به authorized_keys:

 
echo "public_key_string" >> ~/.ssh/authorized_keys

اتصال به سرور با SSH

 
ssh username@server_ip

اجرای یک دستور بدون ورود به شل:

 
ssh username@server_ip command

اتصال به پورت غیر پیش‌فرض:

 
ssh -p 4444 username@server_ip

استفاده از فایل تنظیمات SSH در کلاینت

 
nano ~/.ssh/config

نمونه تنظیم:

 
Host myserver HostName example.com Port 4444 User admin

اتصال ساده:

 
ssh myserver

استفاده از SSH Agent

برای جلوگیری از وارد کردن مکرر Passphrase:

 
eval $(ssh-agent) ssh-add

فوروارد کردن کلید SSH (Agent Forwarding)

 
ssh -A username@server_ip

این قابلیت اجازه می‌دهد از داخل یک سرور به سرور دیگر متصل شوید، بدون کپی کلید خصوصی.


تنظیمات امنیتی سمت سرور

غیرفعال‌سازی ورود با رمز عبور

در فایل:

 
/etc/ssh/sshd_config
 
PasswordAuthentication no

سپس:

 
systemctl restart sshd

تغییر پورت SSH

 
Port 4444

محدود کردن کاربران مجاز

 
AllowUsers user1 user2

یا مبتنی بر گروه:

 
AllowGroups sshmembers

غیرفعال‌سازی ورود root

 
PermitRootLogin no

تونل‌سازی SSH

Local Tunnel

 
ssh -L 8888:localhost:80 user@server

Remote Tunnel

 
ssh -R 8888:localhost:80 user@server

Dynamic Tunnel (SOCKS Proxy)

 
ssh -D 7777 user@server

کنترل اتصال با Escape Code

قطع اتصال گیر کرده:

 
[ENTER] ~.

فرستادن SSH به پس‌زمینه:

 
[ENTER] ~[CTRL+Z]

جمع‌بندی

SSH یکی از حیاتی‌ترین ابزارهای مدیریت سرور است. استفاده صحیح از کلیدها، تنظیمات امنیتی مناسب و قابلیت‌هایی مانند تونل‌سازی و Agent Forwarding می‌تواند امنیت و بهره‌وری شما را به شکل چشمگیری افزایش دهد.

این راهنما توسط دیدگاه برای مدیران سیستم، توسعه‌دهندگان و کاربران حرفه‌ای لینوکس تهیه شده است.