نویسنده: الناز محبی
تاریخ انتشار: 16 جولای 2025 - بروز رسانی در تاریخ: 11 جولای 2026
0 816
تغییر پورت SSH در لینوکس

تغییر پورت SSH در لینوکس؛ راهنمای همه توزیع ها

6 امتیاز

تغییر پورت SSH یکی از ساده ترین و موثرترین اقدامات برای کاهش حملات خودکار به سرور است. پورت پیش فرض SSH یعنی 22 برای همه شناخته شده است و ربات های اسکنر دائما این پورت را روی آی پی های سراسر اینترنت میکوبند. با انتقال SSH به یک پورت غیرمعمول، حجم زیادی از این تلاش های خودکار به کلی از دید شما خارج میشود.

در این راهنمای جامع، تغییر پورت SSH را برای همهٔ توزیع های رایج پوشش میدهیم: اوبونتو و دبیان، و همچنین سنت او اس، آلمالینوکس و راکی لینوکس. علاوه بر ویرایش فایل پیکربندی، نکات حیاتی مثل تنظیم فایروال، SELinux و رفتار متفاوت اوبونتوهای جدید را هم بررسی میکنیم تا پس از تغییر، دسترسی خود به سرور را از دست ندهید.

این مقاله در یک نگاه
  • تغییر پورت SSH حجم زیادی از حملات خودکار به پورت 22 را حذف میکند سه کار لازم است: ویرایش sshd_config، باز کردن پورت در فایروال و در RHEL تنظیم SELinux در اوبونتوهای جدید باید تنظیم را در ssh.socket انجام دهید نه فقط sshd_config

چرا و چه زمانی پورت SSH را تغییر دهیم؟

تغییر پورت SSH یک لایهٔ امنیتی از جنس «کاهش سر و صدا» است. این کار به تنهایی سرور را نفوذناپذیر نمیکند، اما جلوی انبوه اسکن های خودکار و تلاش های حدس رمز که فقط پورت 22 را هدف میگیرند را میگیرد. نتیجه اش لاگ های تمیزتر، مصرف منابع کمتر و سطح حملهٔ کمتر است.

برای رسیدن به یک تغییر پورت امن و بدون قطع دسترسی، این سه گام کلی را دنبال میکنید؛ در ادامهٔ مقاله هر کدام را به تفصیل و برای هر توزیع توضیح میدهیم.

1

پیکربندی SSH

پورت جدید را در فایل sshd_config (و در اوبونتو جدید در ssh.socket) تنظیم کن.

2

فایروال و SELinux

پورت جدید را در فایروال باز کن و در توزیع های RHEL محور به SELinux هم اجازه بده.

3

تست قبل از بستن نشست

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

انتخاب پورت مناسب

هر عددی برای پورت SSH مناسب نیست. پورت های زیر 1024 رزرو شده اند و بسیاری از آن ها توسط سرویس های دیگر استفاده میشوند، پس بهتر است یک پورت در بازهٔ بالاتر انتخاب کنید. یک انتخاب معمول، عددی در بازهٔ 1024 تا 65535 است که توسط سرویس دیگری روی سرور شما استفاده نشده باشد.

از پورت های خیلی معروف و قابل حدس (مثل 2222) هم تا حد امکان پرهیز کنید، چون اسکنرها این موارد را هم امتحان میکنند. قبل از انتخاب، مطمئن شوید پورت موردنظر آزاد است و سرویس دیگری روی آن گوش نمیدهد:

# بررسی اینکه پورت موردنظر در حال استفاده نباشد
sudo ss -tulpn | grep :2200

تغییر پورت SSH در توزیع های مختلف

هستهٔ کار در همهٔ توزیع ها یکسان است: تغییر مقدار Port در فایل پیکربندی سرویس SSH و سپس ری استارت سرویس. اما جزئیات فایروال و SELinux و رفتار سرویس در هر خانواده فرق میکند، پس هر کدام را جداگانه می بینیم.

ویرایش فایل پیکربندی (مشترک در همه توزیع ها)

فایل اصلی پیکربندی سرویس SSH در همهٔ توزیع ها در مسیر etc/ssh/sshd_config قرار دارد. ابتدا از آن یک نسخهٔ پشتیبان بگیرید و سپس آن را ویرایش کنید:

# نسخه پشتیبان و ویرایش
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config

در این فایل دنبال خط Port بگردید. معمولا به صورت کامنت شده و با مقدار 22 وجود دارد. علامت # را بردارید و پورت دلخواه را جایگزین کنید:

# قبل
#Port 22

# بعد
Port 2200

فایل را ذخیره کنید. قبل از ری استارت سرویس، بهتر است صحت پیکربندی را تست کنید تا یک اشتباه تایپی باعث بالا نیامدن سرویس SSH نشود:

sudo sshd -t

اگر این دستور خروجی نداد یعنی پیکربندی سالم است. حالا بسته به توزیع، مراحل تکمیلی را انجام دهید.

اوبونتو و دبیان

در اوبونتو و دبیان بعد از ویرایش فایل، باید پورت جدید را در فایروال UFW باز کنید و سپس سرویس را ری استارت کنید:

# باز کردن پورت جدید در فایروال
sudo ufw allow 2200/tcp

# ری استارت سرویس SSH
sudo systemctl restart ssh
نکتهٔ حیاتی در اوبونتوهای جدید: در اوبونتو 22.10 به بعد و از جمله 24.04، سرویس SSH به صورت پیش فرض با socket activation اجرا میشود. در این حالت، تغییر مقدار Port در فایل sshd_config به تنهایی اثری ندارد و سرویس همچنان روی پورت 22 گوش میدهد. باید پورت را در تنظیمات ssh.socket تغییر دهید.

برای این کار، یک فایل تنظیمات جانبی برای ssh.socket بسازید و پورت جدید را در آن تعریف کنید:

sudo systemctl edit ssh.socket

در ویرایشگری که باز میشود، این خطوط را اضافه کنید. خط خالی ListenStream ضروری است تا پورت پیش فرض 22 حذف شود:

[Socket]
ListenStream=
ListenStream=2200

سپس تنظیمات را بارگذاری مجدد و سرویس را ری استارت کنید:

sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
sudo systemctl restart ssh

اگر این مرحله را در اوبونتوهای جدید انجام ندهید، بعد از ری استارت خواهید دید که سرور همچنان روی پورت 22 پاسخ میدهد و تصور میکنید تغییر پورت کار نکرده است؛ در حالی که علتش همین socket است.

سنت او اس، آلمالینوکس و راکی لینوکس

در توزیع های RHEL محور، علاوه بر فایروال، یک مرحلهٔ اضافی و بسیار مهم وجود دارد: SELinux. اگر پورت جدید را به SELinux معرفی نکنید، سرویس SSH اجازهٔ گوش دادن روی آن پورت را پیدا نمیکند و بالا نمی آید.

ابتدا پورت جدید را به SELinux معرفی کنید، سپس آن را در فایروال باز کنید و در نهایت سرویس را ری استارت کنید:

# معرفی پورت جدید به SELinux
sudo semanage port -a -t ssh_port_t -p tcp 2200

# اگر دستور semanage نصب نیست
sudo dnf install policycoreutils-python-utils -y

# باز کردن پورت در فایروال
sudo firewall-cmd --permanent --add-port=2200/tcp
sudo firewall-cmd --reload

# ری استارت سرویس
sudo systemctl restart sshd

فراموش کردن مرحلهٔ SELinux رایج ترین علت شکست تغییر پورت در سنت او اس و آلمالینوکس است. اگر بعد از ری استارت سرویس SSH بالا نیامد، اولین چیزی که باید بررسی کنید همین است.

تست اتصال پیش از بستن نشست فعلی

این مهم ترین نکتهٔ ایمنی کل فرآیند است: هرگز نشست SSH فعلی خود را نبندید تا وقتی مطمئن شوید اتصال با پورت جدید کار میکند. اگر جایی اشتباه کرده باشید و نشست فعلی را ببندید، دسترسی خود به سرور را از دست میدهید و ممکن است مجبور شوید از کنسول ارائه دهنده وارد شوید.

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

ssh -p 2200 username@server_ip

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

sudo ss -tulpn | grep ssh

رفع مشکلات رایج بعد از تغییر پورت

اگر بعد از تغییر پورت نتوانستید وصل شوید، معمولا یکی از چند علت مشخص وجود دارد. این جدول کمک میکند سریع علت را پیدا کنید.

نشانه علت محتمل راه حل
اتصال timeout میشود پورت در فایروال باز نشده پورت جدید را در ufw یا firewalld باز کنید
هنوز روی پورت 22 جواب میدهد socket در اوبونتو جدید پورت را در ssh.socket تنظیم کنید
سرویس SSH بالا نمی آید SELinux پورت را نمیشناسد با semanage پورت را به SELinux اضافه کنید
خطای پیکربندی هنگام ری استارت اشتباه تایپی در sshd_config با sshd -t فایل را بررسی کنید

یک علت رایج دیگر هم فایروال بیرونی است. بسیاری از ارائه دهنده های سرور یک فایروال ابری یا گروه امنیتی جدا از فایروال داخل سرور دارند؛ اگر پورت جدید را آنجا هم باز نکنید، حتی با تنظیم درست داخل سرور باز هم اتصال برقرار نمیشود. پس یادتان باشد پورت جدید را در پنل ارائه دهنده هم مجاز کنید.

بعد از تغییر پورت: تکمیل امنیت SSH

تغییر پورت یک قدم خوب است، اما به تنهایی کافی نیست؛ چون یک مهاجم هدفمند میتواند با اسکن پورت ها سرویس SSH شما را پیدا کند. برای همین بهتر است آن را با چند اقدام موثرتر ترکیب کنید.

مهم ترین ها عبارت اند از: غیرفعال کردن ورود مستقیم کاربر روت، استفاده از کلید SSH به جای رمز عبور، و محدود کردن دسترسی SSH در فایروال فقط به آی پی های مورد اعتماد. ابزارهایی مثل fail2ban هم با مسدود کردن خودکار آی پی هایی که چند بار رمز اشتباه میزنند، لایهٔ دفاعی خوبی اضافه میکنند. برای مرور کامل این اقدامات، چک لیست امن سازی اولیهٔ سرور نقطهٔ شروع خوبی است.

اگر تازه سرور خود را راه اندازی کرده اید، منطقی است که تغییر پورت SSH را در همان ابتدا و در کنار بقیهٔ تنظیمات پایه انجام دهید. برای آشنایی بیشتر با دستورهای پایهٔ مدیریت سرور هم میتوانید آموزش دستورات لینوکس را ببینید. جزئیات کامل گزینه های پیکربندی SSH هم در مستندات رسمی sshd_config آمده است.

جمع بندی: تغییر پورت SSH در همهٔ توزیع ها با سه کار انجام میشود: تنظیم Port در فایل sshd_config، باز کردن پورت جدید در فایروال، و در توزیع های RHEL محور معرفی پورت به SELinux. در اوبونتوهای جدید هم باید حتما تنظیم را در ssh.socket انجام دهید وگرنه پورت عوض نمیشود.

مهم ترین نکتهٔ ایمنی این است که پیش از بستن نشست فعلی، اتصال با پورت جدید را از یک ترمینال دیگر تست کنید تا دسترسی خود را از دست ندهید. و به یاد داشته باشید تغییر پورت فقط یک لایه است؛ آن را با کلید SSH، غیرفعال کردن ورود روت و محدودسازی دسترسی کامل کنید.

اشتراک گذاری
+

آیا تغییر پورت SSH واقعا امنیت را بالا میبرد؟

تا حد زیادی جلوی حملات خودکار و اسکنرهایی که فقط پورت ۲۲ را هدف میگیرند را میگیرد و لاگ ها را تمیزتر میکند. اما در برابر یک مهاجم هدفمند که پورت اسکن میکند کافی نیست و باید با کلید SSH و غیرفعال کردن ورود روت ترکیب شود.

+

چرا بعد از تغییر Port در sshd_config، اوبونتو من هنوز روی پورت ۲۲ است؟

چون در اوبونتو ۲۲.۱۰ به بعد (از جمله ۲۴.۰۴) سرویس SSH با socket اجرا میشود و پورت را از ssh.socket میگیرد. باید با دستور systemctl edit ssh.socket پورت جدید را تعریف کنید.

+

در آلمالینوکس یا سنت او اس بعد از تغییر پورت، SSH بالا نمی آید. مشکل چیست؟

به احتمال زیاد SELinux پورت جدید را نمیشناسد. با دستور semanage port -a -t ssh_port_t -p tcp و شمارهٔ پورت، آن را به SELinux معرفی کنید و سپس سرویس را ری استارت کنید.

+

چه پورتی برای SSH انتخاب کنم؟

یک پورت آزاد در بازهٔ بالاتر از ۱۰۲۴ که سرویس دیگری از آن استفاده نمیکند. از پورت های خیلی قابل حدس مثل ۲۲۲۲ پرهیز کنید و پیش از انتخاب با ss بررسی کنید پورت آزاد باشد.

+

اگر بعد از تغییر پورت دسترسی SSH را از دست بدهم چه کنم؟

از کنسول یا پنل ارائه دهندهٔ سرور (مثل KVM یا کنسول ابری) وارد شوید و تنظیمات را اصلاح یا فایل پشتیبان sshd_config را جایگزین کنید. برای همین همیشه پیش از بستن نشست فعلی، اتصال با پورت جدید را تست کنید.

منابع:

famaserver.com

مقالات مرتبط این مطلب پیشنهاد می شود