آموزش تغییر پورت SSH در لینوکس پرینت

  • آموزش تغییر پورت SSH, آموزش تغییر SSH, آموزش تغییر پورت ssh, آموزش تغییر پورت SSH در لینوکس, تغییر پورت SSH در لینوکس, تغییر پورت SSH
  • 0

SSH یکی از اصلی‌ترین روش‌های مدیریت سرورهای لینوکسی از راه دور است. پورت پیش‌فرض SSH معمولاً 22 است و بسیاری از اسکنرها و ربات‌های اینترنتی نیز به‌صورت خودکار این پورت را بررسی می‌کنند.

تغییر پورت SSH به‌تنهایی جایگزین روش‌های امنیتی مانند استفاده از SSH Key، فایروال و Fail2Ban نیست، اما می‌تواند حجم اتصال‌های تصادفی و اسکن‌های خودکار روی پورت پیش‌فرض را کاهش دهد.

در این آموزش نحوه تغییر پورت SSH در Ubuntu، Debian، AlmaLinux، Rocky Linux و CentOS را مرحله‌به‌مرحله بررسی می‌کنیم.

پیش‌نیازها

برای انجام این آموزش به موارد زیر نیاز دارید:

  • دسترسی root یا کاربر دارای sudo
  • دسترسی SSH به سرور
  • یک پورت آزاد برای SSH
  • دسترسی به تنظیمات Firewall سرور

پیشنهاد می‌شود هنگام انجام این تغییر، Session فعلی SSH را باز نگه دارید و تا زمانی که اتصال با پورت جدید را تست نکرده‌اید از آن خارج نشوید.

مرحله اول: بررسی پورت فعلی SSH

برای مشاهده پورت فعلی SSH می‌توانید دستور زیر را اجرا کنید:

ss -tulpn | grep ssh

یا:

ss -lntp | grep ':22'

در حالت پیش‌فرض معمولاً SSH روی پورت 22 در حال Listen است.

مرحله دوم: تهیه بکاپ از تنظیمات SSH

قبل از ایجاد هرگونه تغییر، از فایل تنظیمات SSH نسخه پشتیبان تهیه کنید:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

در صورت بروز مشکل می‌توانید تنظیمات قبلی را بازیابی کنید.

مرحله سوم: انتخاب پورت جدید

در این آموزش از پورت زیر به‌عنوان مثال استفاده می‌کنیم:

2222

شما می‌توانید پورت دیگری انتخاب کنید، اما ابتدا مطمئن شوید سرویس دیگری از آن استفاده نمی‌کند.

برای بررسی پورت 2222:

ss -lntp | grep ':2222'

اگر خروجی دریافت نکردید، معمولاً سرویسی روی این پورت در حال Listen نیست.

مرحله چهارم: تغییر پورت SSH

فایل تنظیمات OpenSSH Server معمولاً در مسیر زیر قرار دارد:

/etc/ssh/sshd_config

OpenSSH تنظیمات daemon را از این فایل و در برخی سیستم‌ها از فایل‌های داخل sshd_config.d دریافت می‌کند.

فایل را باز کنید:

nano /etc/ssh/sshd_config

خط زیر را پیدا کنید:

#Port 22

آن را به شکل زیر تغییر دهید:

Port 2222

اگر خط Port وجود نداشت، می‌توانید آن را اضافه کنید.

سپس فایل را ذخیره کنید.

روش پیشنهادی در سیستم‌های جدید

در برخی سیستم‌ها می‌توانید به‌جای تغییر مستقیم فایل اصلی، یک فایل جداگانه ایجاد کنید:

nano /etc/ssh/sshd_config.d/port.conf

و داخل آن بنویسید:

Port 2222

این روش مدیریت تغییرات سفارشی را ساده‌تر می‌کند.

مرحله پنجم: بررسی صحت تنظیمات SSH

این مرحله بسیار مهم است.

قبل از Restart کردن SSH، دستور زیر را اجرا کنید:

sshd -t

اگر هیچ خروجی نمایش داده نشد، معمولاً Syntax تنظیمات صحیح است.

اگر خطایی وجود داشته باشد، ابتدا آن را برطرف کنید و سپس سرویس SSH را Restart کنید.

مستندات Ubuntu نیز توصیه می‌کنند قبل از Restart سرویس، تنظیمات با sshd -t بررسی شوند تا یک خطای پیکربندی باعث از دست رفتن دسترسی SSH نشود.

مرحله ششم: باز کردن پورت جدید در Firewall

قبل از Restart کردن SSH باید پورت جدید را در Firewall باز کنید.

Ubuntu و Debian با UFW

اگر از UFW استفاده می‌کنید:

ufw allow 2222/tcp

و وضعیت را بررسی کنید:

ufw status

باید پورت جدید در لیست Rules مشاهده شود.

AlmaLinux، Rocky Linux و CentOS با Firewalld

اگر از Firewalld استفاده می‌کنید:

firewall-cmd --permanent --add-port=2222/tcp

سپس:

firewall-cmd --reload

برای بررسی:

firewall-cmd --list-ports

نکته مهم برای SELinux

در AlmaLinux، Rocky Linux و CentOS ممکن است SELinux فعال باشد.

در این شرایط علاوه بر Firewall ممکن است لازم باشد پورت جدید را برای SSH در SELinux نیز تعریف کنید.

ابتدا وضعیت SELinux را بررسی کنید:

getenforce

اگر مقدار زیر را مشاهده کردید:

Enforcing

می‌توانید در سیستم‌هایی که ابزار semanage نصب است، پورت جدید را به نوع ssh_port_t اضافه کنید:

semanage port -a -t ssh_port_t -p tcp 2222

اگر پورت قبلاً در SELinux تعریف شده باشد، ممکن است به‌جای -a نیاز به -m داشته باشید.

برای مشاهده پورت‌های مجاز SSH:

semanage port -l | grep ssh

مرحله هفتم: Restart کردن SSH

در Ubuntu و Debian معمولاً:

systemctl restart ssh

در AlmaLinux، Rocky Linux و CentOS معمولاً می‌توانید از دستور زیر استفاده کنید:

systemctl restart sshd

سپس وضعیت سرویس را بررسی کنید:

systemctl status sshd

یا در Ubuntu:

systemctl status ssh

نکته مهم در Ubuntuهای جدید

در برخی نسخه‌های جدید Ubuntu، OpenSSH می‌تواند با systemd socket activation مدیریت شود. در این حالت تغییر Port ممکن است تنها با Restart کردن ssh.service اعمال نشود و لازم باشد تنظیمات systemd نیز Reload شود.

در چنین سیستمی می‌توانید اجرا کنید:

systemctl daemon-reload
systemctl restart ssh.socket

سپس پورت Listen شده را بررسی کنید:

ss -lntp | grep ssh

مرحله هشتم: تست پورت جدید

مهم‌ترین مرحله این است که قبل از بستن اتصال SSH فعلی، یک Terminal جدید باز کنید.

سپس با پورت جدید متصل شوید:

ssh -p 2222 root@SERVER_IP

به‌جای SERVER_IP آدرس IP سرور را وارد کنید.

اگر اتصال با موفقیت انجام شد، تغییر پورت SSH به‌درستی اعمال شده است.

بررسی پورت SSH بعد از تغییر

برای بررسی اینکه SSH روی چه پورتی Listen می‌کند:

ss -lntp | grep ssh

یا:

ss -lntp | grep ':2222'

در صورت موفقیت باید پورت جدید را مشاهده کنید.

اتصال SSH با پورت جدید

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

ssh -p 2222 root@SERVER_IP

اگر از نرم‌افزارهایی مانند PuTTY، Termius یا MobaXterm استفاده می‌کنید نیز باید مقدار Port را از 22 به پورت جدید تغییر دهید.

بستن پورت 22

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

بعد از اطمینان از عملکرد پورت جدید، در UFW می‌توانید Rule قبلی را حذف کنید:

ufw delete allow 22/tcp

در Firewalld:

firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload

قبل از حذف Rule مربوط به SSH مطمئن شوید پورت جدید واقعاً در Firewall باز است.

اگر بعد از تغییر دیگر SSH وصل نشد چه کنیم؟

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

sshd -t

سپس:

ss -lntp | grep ssh

Firewall را بررسی کنید:

ufw status

یا:

firewall-cmd --list-all

همچنین Log سرویس SSH می‌تواند اطلاعات مفیدی ارائه دهد:

journalctl -u sshd --no-pager -n 50

در Ubuntu می‌توانید از دستور زیر نیز استفاده کنید:

journalctl -u ssh --no-pager -n 50

اگر دسترسی SSH کاملاً قطع شده است، باید از Console یا KVM ارائه‌شده توسط سرویس‌دهنده سرور استفاده کنید.

بازگرداندن پورت SSH به 22

برای بازگرداندن پورت پیش‌فرض، فایل تنظیمات را باز کنید:

nano /etc/ssh/sshd_config

مقدار زیر را تنظیم کنید:

Port 22

سپس تنظیمات را بررسی کنید:

sshd -t

و سرویس SSH را Restart کنید.

آیا تغییر پورت SSH امنیت سرور را تضمین می‌کند؟

خیر.

تغییر پورت SSH تنها یکی از اقدامات جانبی برای کاهش اسکن‌ها و تلاش‌های خودکار روی پورت پیش‌فرض است.

برای افزایش واقعی امنیت SSH بهتر است اقدامات زیر را نیز انجام دهید:

  • استفاده از SSH Key به‌جای Password
  • غیرفعال کردن ورود مستقیم Root در صورت امکان
  • استفاده از Fail2Ban
  • محدود کردن دسترسی SSH با Firewall
  • استفاده از Password قوی
  • بروزرسانی منظم سیستم‌عامل و OpenSSH

جمع‌بندی

برای تغییر پورت SSH در لینوکس ابتدا فایل تنظیمات SSH را ویرایش کنید و پورت جدید را مشخص کنید:

Port 2222

سپس قبل از Restart سرویس حتماً تنظیمات را بررسی کنید:

sshd -t

پورت جدید را در Firewall باز کنید و پس از Restart کردن SSH، در یک Terminal جدید اتصال را آزمایش کنید:

ssh -p 2222 root@SERVER_IP

مهم‌ترین نکته این است که تا قبل از اطمینان از اتصال موفق روی پورت جدید، Session فعلی SSH و پورت 22 را نبندید.


آیا این پاسخ به شما کمک کرد؟

« برگشت