پروتکل SSH (Secure Shell) یک پروتکل ارتباطی امن است که برای دسترسی به سرورهای لینوکسی از راه دور استفاده میشود. این پروتکل جایگزین امن تری برای روشهای قدیمی مانند Telnet و RSH است که اطلاعات را بدون رمزگذاری ارسال میکردند. SSH از رمزنگاری قوی برای انتقال دادهها استفاده میکند و میتواند برای مدیریت سرورها، اجرای دستورات از راه دور، انتقال امن فایلها و حتی ایجاد تونلهای رمزگذاری شده به کار رود. به دلیل امنیت بالای این پروتکل، استفاده از آن در سرورهای لینوکسی امری ضروری محسوب میشود و اکثر توزیعهای لینوکس بهصورت پیشفرض از آن پشتیبانی میکنند.
SSH نه تنها برای ورود امن به سرورها از راه دور مورد استفاده قرار میگیرد، بلکه ابزارهای جانبی مانند SCP و SFTP نیز برای انتقال فایل ها بر بستر SSH طراحی شده اند. بسیاری از مدیران سرور برای مدیریت راه دور و انجام وظایف سیستمی از SSH بهره میبرند. همچنین، SSH در شبکه های کامپیوتری برای ایجاد تونل های امن، فوروارد کردن پورتها (Port Forwarding) و حتی اجرای دستورات توزیع شده در چندین سرور استفاده میشود. در سازمانها، استفاده از SSH بهعنوان یک روش استاندارد برای مدیریت سیستم های مبتنی بر لینوکس و یونیکس پذیرفته شده است.
فرض کنید شما یک سرور لینوکس دارید که از راه دور باید به آن دسترسی داشته باشید. سرور شما ممکن است در یک دیتاسنتر، یک محیط ابری مثل AWS، یا در یک شبکه داخلی قرار داشته باشد. برای مدیریت آن، نیاز به یک ارتباط امن از طریق SSH دارید. در این سناریو، ابتدا نصب SSH Server را انجام می دهیم، سپس تنظیمات امنیتی را اعمال میکنیم تا خطر حملات کاهش پیدا کند. در نهایت، روش های تست و اطمینان از صحت کارکرد SSH را بررسی خواهیم کرد. این سناریو برای مدیران شبکه، متخصصان امنیت و توسعهدهندگان که نیاز به کنترل از راه دور سرورها دارند بسیار مفید خواهد بود.
بسته به توزیع لینوکس، ممکن است بسته OpenSSH Server بهصورت پیشفرض نصب باشد یا نیاز به نصب دستی داشته باشد. در Ubuntu و Debian-based (مانند Kali، Ubuntu Server)، این بسته از طریق apt
قابل نصب است. در CentOS و RHEL از yum
یا dnf
استفاده میشود و در Arch Linux هم pacman
ابزار مدیریت بسته است. پس از نصب، سرویس sshd
باید فعال و اجرا شود. اگر در حال استفاده از یک سرور ابری (Cloud VPS) هستید، ممکن است ارائه دهنده ی خدمات شما بهطور پیشفرض SSH را نصب کرده باشد، اما بهتر است تنظیمات امنیتی را بررسی کنید.
sudo apt update
sudo apt install openssh-server -y
sudo yum install -y openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo pacman -S openssh
sudo systemctl enable sshd
sudo systemctl start sshd
پس از نصب، می توانید با دستور systemctl status sshd
وضعیت سرویس را بررسی کنید.
بعد از نصب، برای اطمینان از اجرای صحیح سرویس SSH، از دستور systemctl status sshd
استفاده کنید. اگر سرویس SSH فعال نباشد، باید آن را بهصورت دستی استارت کنید. برخی از سیستم عامل ها مانند CentOS و RHEL به دلیل تنظیمات امنیتی پیشفرض، ممکن است فایروال فعال داشته باشند که مانع دسترسی به SSH میشود. در این صورت، باید تنظیمات فایروال را بررسی و پورت موردنظر را باز کنید. همچنین، بررسی لاگهای سیستم (/var/log/auth.log
در Debian و /var/log/secure
در CentOS) میتواند به شما در رفع مشکلات احتمالی کمک کند.
برای افزایش امنیت، توصیه میشود تنظیمات پیشفرض 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 روی یک سیستم دیگر اتصال را بررسی کنید. در سیستم عامل های لینوکس و macOS، دستور ssh
بهصورت پیش فرض در ترمینال موجود است. در ویندوز نیز میتوان از PowerShell یا نرمافزارهایی مانند PuTTY استفاده کرد. برای تست اتصال، کافی است دستور زیر را اجرا کنید:
ssh user@server_ip -p 2222
اگر کلید SSH را روی سرور تنظیم کرده باشید، نیازی به وارد کردن رمز عبور نخواهید داشت. در غیر این صورت، پس از وارد کردن رمز عبور، باید صفحه ترمینال سرور را مشاهده کنید.
اگر تنظیمات اشتباه باعث قطع دسترسی شما شده است، میتوانید از کنسول مدیریتی سرور (مثلاً کنسول VPS) استفاده کنید و فایل تنظیمات /etc/ssh/sshd_config را به حالت قبل بازگردانید.
از دستور زیر برای مشاهده تلاشهای ناموفق ورود استفاده کنید: sudo cat /var/log/auth.log | grep "Failed password" در CentOS مسیر لاگها /var/log/secure است.
در فایل /etc/ssh/sshd_config مقدار زیر را اضافه کنید: AllowUsers admin سپس سرویس را ریاستارت کنید.
اطمینان حاصل کنید که پرمیژنها بهدرستی تنظیم شدهاند: chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys همچنین بررسی کنید که PubkeyAuthentication در sshd_config روی yes تنظیم شده باشد.
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات
محمد نصیری هستم ، بنیانگذار انجمن تخصصی فناوری اطلاعات ایران و مجموعه توسینسو ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 80 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر و ناظر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود