پروتکل SSH (Secure Shell) یک پروتکل ارتباطی امن است که برای دسترسی به سرورهای لینوکسی از راه دور استفاده میشود. این پروتکل جایگزین امن تری برای روشهای قدیمی مانند Telnet و RSH است که اطلاعات را بدون رمزگذاری ارسال میکردند. SSH از رمزنگاری قوی برای انتقال دادهها استفاده میکند و میتواند برای مدیریت سرورها، اجرای دستورات از راه دور، انتقال امن فایلها و حتی ایجاد تونلهای رمزگذاری شده به کار رود. به دلیل امنیت بالای این پروتکل، استفاده از آن در سرورهای لینوکسی امری ضروری محسوب میشود و اکثر توزیعهای لینوکس بهصورت پیشفرض از آن پشتیبانی میکنند.
1. کاربردهای اصلی SSH
SSH نه تنها برای ورود امن به سرورها از راه دور مورد استفاده قرار میگیرد، بلکه ابزارهای جانبی مانند SCP و SFTP نیز برای انتقال فایل ها بر بستر SSH طراحی شده اند. بسیاری از مدیران سرور برای مدیریت راه دور و انجام وظایف سیستمی از SSH بهره میبرند. همچنین، SSH در شبکه های کامپیوتری برای ایجاد تونل های امن، فوروارد کردن پورتها (Port Forwarding) و حتی اجرای دستورات توزیع شده در چندین سرور استفاده میشود. در سازمانها، استفاده از SSH بهعنوان یک روش استاندارد برای مدیریت سیستم های مبتنی بر لینوکس و یونیکس پذیرفته شده است.
۲. سناریوی عملی: راهاندازی یک SSH سرور امن
فرض کنید شما یک سرور لینوکس دارید که از راه دور باید به آن دسترسی داشته باشید. سرور شما ممکن است در یک دیتاسنتر، یک محیط ابری مثل AWS، یا در یک شبکه داخلی قرار داشته باشد. برای مدیریت آن، نیاز به یک ارتباط امن از طریق SSH دارید. در این سناریو، ابتدا نصب SSH Server را انجام می دهیم، سپس تنظیمات امنیتی را اعمال میکنیم تا خطر حملات کاهش پیدا کند. در نهایت، روش های تست و اطمینان از صحت کارکرد SSH را بررسی خواهیم کرد. این سناریو برای مدیران شبکه، متخصصان امنیت و توسعهدهندگان که نیاز به کنترل از راه دور سرورها دارند بسیار مفید خواهد بود.
۳. نصب OpenSSH Server در توزیعهای مختلف لینوکس
بسته به توزیع لینوکس، ممکن است بسته OpenSSH Server بهصورت پیشفرض نصب باشد یا نیاز به نصب دستی داشته باشد. در Ubuntu و Debian-based (مانند Kali، Ubuntu Server)، این بسته از طریق apt
قابل نصب است. در CentOS و RHEL از yum
یا dnf
استفاده میشود و در Arch Linux هم pacman
ابزار مدیریت بسته است. پس از نصب، سرویس sshd
باید فعال و اجرا شود. اگر در حال استفاده از یک سرور ابری (Cloud VPS) هستید، ممکن است ارائه دهنده ی خدمات شما بهطور پیشفرض SSH را نصب کرده باشد، اما بهتر است تنظیمات امنیتی را بررسی کنید.
دستورات نصب بر اساس توزیع:
در اوبونتو و Debian-based
sudo apt update
sudo apt install openssh-server -y
در CentOS و RHEL
sudo yum install -y openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
در Arch Linux
sudo pacman -S openssh
sudo systemctl enable sshd
sudo systemctl start sshd
پس از نصب، می توانید با دستور systemctl status sshd
وضعیت سرویس را بررسی کنید.
۴. بررسی وضعیت SSH Server و اطمینان از عملکرد آن
بعد از نصب، برای اطمینان از اجرای صحیح سرویس SSH، از دستور systemctl status sshd
استفاده کنید. اگر سرویس SSH فعال نباشد، باید آن را بهصورت دستی استارت کنید. برخی از سیستم عامل ها مانند CentOS و RHEL به دلیل تنظیمات امنیتی پیشفرض، ممکن است فایروال فعال داشته باشند که مانع دسترسی به SSH میشود. در این صورت، باید تنظیمات فایروال را بررسی و پورت موردنظر را باز کنید. همچنین، بررسی لاگهای سیستم (/var/log/auth.log
در Debian و /var/log/secure
در CentOS) میتواند به شما در رفع مشکلات احتمالی کمک کند.
۵. تنظیمات امنیتی SSH
برای افزایش امنیت، توصیه میشود تنظیمات پیشفرض SSH را تغییر دهید. یکی از مهم ترین اقدامات، غیر فعال کردن ورود مستقیم با کاربر Root است، زیرا حساب Root یکی از اهداف اصلی حملات Brute Force محسوب میشود. علاوه بر این، تغییر پورت پیشفرض SSH از ۲۲ به یک عدد دیگر میتواند باعث کاهش احتمال حملات خودکار شود. همچنین، برای جلوگیری از ورود کاربران غیرمجاز، میتوان لیستی از کاربران مجاز (AllowUsers
) را در تنظیمات SSH مشخص کرد. یکی از روش های بسیار امن، استفاده از احراز هویت مبتنی بر کلید عمومی (Public Key Authentication) است که میتوان به طور کامل ورود با رمز عبور را غیرفعال کرد.
تنظیمات امنیتی پیشنهادی در /etc/ssh/sshd_config
PermitRootLogin no
Port 2222
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers admin
بعد از اعمال تغییرات، حتماً سرویس SSH را ری استارت کنید:
sudo systemctl restart sshd
۶. نحوه تست اتصال SSH
بعد از انجام تنظیمات، میتوانید از طریق کلاینت SSH روی یک سیستم دیگر اتصال را بررسی کنید. در سیستم عامل های لینوکس و macOS، دستور ssh
بهصورت پیش فرض در ترمینال موجود است. در ویندوز نیز میتوان از PowerShell یا نرمافزارهایی مانند PuTTY استفاده کرد. برای تست اتصال، کافی است دستور زیر را اجرا کنید:
ssh user@server_ip -p 2222
اگر کلید SSH را روی سرور تنظیم کرده باشید، نیازی به وارد کردن رمز عبور نخواهید داشت. در غیر این صورت، پس از وارد کردن رمز عبور، باید صفحه ترمینال سرور را مشاهده کنید.
سلام و عرض ادب ، این سوال باید در قسمت سوالات مطرح بشه ، اما می تونید به لینک زیر هم مراجعه کنید :
سلام
برای عوض کردن پورت ssh که به صورت پیش فرض 22 هست باید چکار کرد؟
مثلا بخوایم پورت 9999 باشه