SSH چیست؟ دسترسی امن از راه دور به سرور لینوکس
SSH چگونه نشست رمزشده میسازد، تفاوت کلاینت و sshd، جایگزینی telnet، و کاربردهای پوسته، کپی فایل و تونل.
بنیانگذار و مهندس محصول

تقریباً هر سرور لینوکس در ابر را با SSH لمس میکنید: نصب بسته، دیدن لاگ، استقرار، یا یک دستور اضطراری. SSH (Secure Shell) مجموعهای از پروتکل و ابزار است که بهجای ارسال رمز و فرمان بهصورت متن ساده، یک کانال رمزشده و احرازهویتشده بین کلاینت و سرور میسازد.
نسخهٔ رایجی که روی اوبونتو و اکثر توزیعها میبینید OpenSSH است: کلاینت `ssh` روی لپتاپ شما و شنوندهٔ `sshd` روی سرور. مقالات بعدی کلیدها و سختسازی را پوشش میدهند؛ اینجا خود مفهوم و جریان اتصال.

پاسخ کوتاه
SSH پروتکل دسترسی امن از راه دور است که محرمانگی، یکپارچگی و احراز هویت را برای نشست تعاملی، اجرای فرمان، و انتقال فایل (scp/sftp) فراهم میکند. بهصورت پیشفرض روی پورت TCP 22 گوش میدهد. جایگزین امن ابزارهای قدیمی مثل telnet و rsh است که رمز را واضح میفرستادند.
اگر فقط یک دروازهٔ مدیریت به سرور دارید، کیفیت پیکربندی SSH کیفیت امنیت عملیاتی شماست.
چه چیزی را جایگزین کرد؟
telnet و ابزارهای مشابه فرمان و گذرواژه را روی شبکه آشکار میفرستادند. هر sniffer در مسیر میتوانست به نشست برسد. SSH با تبادل کلید و رمزنگاری نشست این سطح حمله را میبندد و همزمان مدل «پوسته از راه دور» را که مدیران میخواستند حفظ میکند.
اجزای اصلی
- کلاینت ssh: از ماشین شما اتصال را آغاز میکند.
- سرور sshd: روی میزبان مقصد گوش میدهد و پس از احراز هویت نشست میسازد.
- کلید میزبان (host key): هویت سرور را ثابت میکند تا به man-in-the-middle سادهلوحانه نخورید.
- احراز هویت کاربر: گذرواژه، کلید عمومی، گواهی، یا روشهای دیگر.
bash
ssh user@server.example.com ssh -p 22 user@203.0.113.10
جریان اتصال به زبان ساده
- کلاینت به پورت SSH وصل میشود و نسخهپروتکل رد و بدل میشود.
- تبادل کلید و توافق الگوریتم؛ کانال امن میشود.
- سرور با host key شناخته میشود؛ کلاینت اثرانگشت را با known_hosts مقایسه میکند.
- کاربر احراز هویت میشود (مثلاً کلید یا رمز).
- نشست پوسته، فرمان دوردست، یا زیرسیستم SFTP روی کانالها باز میشود.
اولین اتصال معمولاً از شما میخواهد host key را تأیید کنید. تأیید کورکورانه روی شبکهٔ غیرقابلاعتماد خطرناک است؛ اثرانگشت را از کانال جدا (پنل ابر، console) چک کنید.
bash
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
کاربردهای روزمره فراتر از پوسته
bash
ssh user@host 'uptime' scp ./app.tar.gz user@host:/tmp/ sftp user@host ssh -L 8080:127.0.0.1:8080 user@host
اجرای یک فرمان بدون نشست تعاملی، کپی فایل، SFTP، و port forwarding برای رسیدن امن به سرویسی که فقط روی localhost سرور گوش میدهد — همه روی همان پروتکل.
OpenSSH روی اوبونتو
bash
sudo apt install openssh-client sudo apt install openssh-server systemctl status ssh
طبق مستندات اوبونتو، پیکربندی اصلی در /etc/ssh/sshd_config است و Include برای فایلهای /etc/ssh/sshd_config.d/*.conf در ابتدای فایل میآید؛ چون OpenSSH معمولاً اولین مقدار را برای هر کلید نگه میدارد، محتوای drop-in میتواند رفتار را عوض کند — نکتهای حیاتی برای سختسازی.
امنیت در یک نگاه (قبل از harden)
- رمزنگاری نشست ≠ پیکربندی امن. رمز ضعیف یا root با password هنوز خطر است.
- پورت غیر۲۲ امنیت واقعی نیست؛ فقط نویز اسکنر کمعمق را کم میکند.
- کلید میزبان را جدی بگیرید؛ هشدار تغییر host key را نادیده نگیرید.
چه زمانی SSH کافی نیست؟
برای دسترسی کاربران نهایی به اپ وب، SSH ابزار درستی نیست. برای تیم بزرگ با حسابهای زیاد، بهتر است با هویت متمرکز، bastion، و ممیزی جلو بروید نه با حساب مشترک. برای انتقال فایل حجیم مکرر ممکن است ابزارهای دیگری روی همان SSH یا پیوندهای دیگر مناسبتر باشند.
اشتباههای رایج تازهکار
- باز گذاشتن password روی اینترنت بدون محدودیت.
- استفاده از یک کاربر مشترک با کلید روی همهٔ لپتاپها.
- غیرفعال کردن SSH قبل از اطمینان از دسترسی console.
- کپی کردن private key داخل ایمیج داکر یا مخزن git.
خلاصه
SSH کانال امن مدیریت از راه دور است؛ OpenSSH پیادهسازی رایج آن روی لینوکس. پوسته، فرمان، فایل و تونل روی یک پروتکل سوار میشوند. قدم بعدی منطقی: ساخت و مدیریت کلیدها، سپس سختسازی sshd بر اساس مستندات رسمی.
سوالات متداول
آیا SSH فقط برای لینوکس است؟
خیر. کلاینت و سرور روی ویندوز و مک هم هست؛ سرورهای لینوکس مقصد بسیار رایجیاند.
فرق SSH و VPN؟
VPN معمولاً کل شبکه یا بخش بزرگی را تونل میکند؛ SSH نشست/تونل نقطهای میسازد. گاهی هر دو با هم استفاده میشوند.
منابع و مراجع
- OpenSSH manual pages: https://www.openssh.com/manual.html
- Ubuntu Server — OpenSSH server: https://documentation.ubuntu.com/server/how-to/security/openssh-server/
- ssh(1) OpenBSD man: https://man.openbsd.org/ssh.1
- sshd(8): https://man.openbsd.org/sshd.8
نویسنده
سهیل ابراهیمپور بنیانگذار FutureForge است. روی طراحی محصول، معماری و استقرار نرمافزار سفارشی کار میکند.
یادداشتهای مرتبط
اگر در انتخاب معماری یا مسیر توسعه مطمئن نیستید، میتوانید درباره پروژه صحبت کنیم.
مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ میکنیم.




