SSD Nodes Learn Hosting plans →
راهنماها Matt Connorتوسط Matt Connor · به‌روزرسانی شده 2026-09-04

تغییر پورت SSH در Rocky Linux و AlmaLinux با SELinux

برای تغییر پورت SSH در توزیع‌های RHEL باید تنظیمات sshd_config، firewalld و SELinux را به‌ترتیب پیکربندی کنید. با این راهنما از خطای Permission denied و مسدود شدن دسترسی جلوگیری کنید.

چرا تغییر پورت SSH در اینجا به سه مرحله نیاز دارد

برای تغییر پورت SSH در Rocky Linux، AlmaLinux، CentOS Stream یا Fedora، یک ویرایش کافی نیست. سه سیستم مجزا تعیین می‌کنند که آیا اتصال روی پورت جدید برقرار می‌شود یا خیر. firewalld تصمیم می‌گیرد که آیا بسته به ماشین می‌رسد یا نه. SELinux تصمیم می‌گیرد که آیا sshd اصلاً اجازه دارد به آن شماره پورت متصل (bind) شود یا خیر. sshd_config تعیین می‌کند که دیمون (daemon) چه پورتی را درخواست کند. اگر مرحله SELinux را انجام ندهید، دیمون از شروع به کار خودداری می‌کند. اگر مرحله firewalld را نادیده بگیرید، سرویس شروع می‌شود و گوش می‌دهد، اما هیچ‌کس نمی‌تواند به آن دسترسی پیدا کند.

در Ubuntu این کار تنها با یک ویرایش و یک راه‌اندازی مجدد انجام می‌شود، زیرا Ubuntu به‌جای SELinux از AppArmor استفاده می‌کند و هیچ پروفایلی که محدود کند sshd به چه پورت‌هایی متصل شود، ارائه نمی‌دهد. اگر ufw در آنجا فعال باشد، فقط یک قانون (rule) اضافه می‌کنید. تفاوت دقیقاً همین است. خانواده RHEL در نصب تازه، firewalld را فعال و SELinux را در حالت enforcing قرار می‌دهند و هر دوی آن‌ها به شماره پورت‌ها حساس هستند.

این مراحل را به ترتیب انجام دهید تا نشست (session) فعلی شما در طول هر مرحله باز بماند:

  1. پورت جدید را در firewalld باز کنید و فعلاً پورت 22 را باز نگه دارید.
  2. برچسب SELinux را برای پورت جدید با استفاده از semanage اضافه کنید.
  3. پورت را در پیکربندی sshd تنظیم کنید.
  4. sshd را راه‌اندازی مجدد کنید، سپس پیش از بستن ترمینال اول، از یک ترمینال دوم با پورت جدید وارد شوید.
پیش از شروع، کنسول وب (VNC یا سریال) ارائه‌دهنده خود را پیدا کنید و بررسی کنید که می‌توانید از طریق آن وارد شوید. آن کنسول راه بازگشت شما در صورت بروز خطا در تغییرات است. تغییر پورت یکی از رایج‌ترین دلایلی است که کاربران دسترسی خود را به سروری که تازه اجاره کرده‌اند، مسدود می‌کنند.

ابتدا semanage را نصب کنید

semanage ابزاری است که تنظیمات سیاست‌های SELinux را ویرایش می‌کند و در نصب‌های حداقلی Rocky Linux یا AlmaLinux گنجانده نشده است. این ابزار در بسته policycoreutils-python-utils قرار دارد.

sudo dnf install -y policycoreutils-python-utils

اجرای این دستور پیش از نصب بسته مذکور منجر به خطای sudo: semanage: command not found می‌شود و این همان نقطه‌ای است که بسیاری از کاربران تصور می‌کنند SELinux نصب نیست و از این مرحله صرف‌نظر می‌کنند. SELinux نصب شده است؛ تنها ابزار مدیریت آن در دسترس نیست. اگر سینتکس dnf برای شما جدید است، معادل‌های دستورات dnf و apt آن را با آنچه از قبل می‌دانید تطبیق می‌دهند.

انتخاب یک پورت و اطمینان از آزاد بودن آن

هر پورت TCP آزاد بین 1024 تا 65535 مناسب است. پیش از نهایی کردن انتخاب، دو بررسی انجام دهید:

sudo ss -tlnp | grep -w 2222
sudo semanage port -l | grep -w 2222

دستور اول نشان می‌دهد که آیا پردازشی در حال حاضر روی آن شماره در حال گوش دادن است یا خیر. دستور دوم مشخص می‌کند که آیا سیاست SELinux آن را به نوع سرویس دیگری اختصاص داده است یا نه. اگر پورت آزاد باشد، هیچ‌کدام از این دستورها خروجی نخواهند داشت. اگر سیاست SELinux قبلاً آن را رزرو کرده باشد، دستور semanage port -a در مرحله 2 با خطای ValueError: Port tcp/2222 already defined مواجه می‌شود و راه حل آن، انتخاب یک شماره پورت متفاوت است.

در این راهنما از پورت 2222 به عنوان مثال استفاده شده است. این پورت همچنین اولین پورتی است که اسکنرها پس از 22 امتحان می‌کنند، بنابراین در یک سرور واقعی، پورتی را انتخاب کنید که کمتر در معرض توجه باشد.

گام 1: باز کردن پورت در firewalld

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

--permanent قانون را در فایل zone روی دیسک می‌نویسد و تغییری در فایروال در حال اجرا ایجاد نمی‌کند. --reload پیکربندی موجود روی دیسک را در فایروال در حال اجرا بارگذاری می‌کند. اگر مرحله reload را نادیده بگیرید، قانون ایجاد می‌شود اما تا زمانی که firewalld مجدداً راه‌اندازی نشود، هیچ اثری نخواهد داشت؛ این یکی از رایج‌ترین دلایلی است که باعث می‌شود کل این فرآیند بدون دلیل خاصی شکست‌خورده به نظر برسد.

فعلاً ورودی سرویس ssh را تغییر ندهید. این ورودی همان چیزی است که پورت 22 را باز نگه می‌دارد و در حین تست، راه نجات شماست.

پنل کنترل ارائه‌دهندهٔ خود را نیز بررسی کنید. بسیاری از میزبان‌ها یک فایروال شبکه در مقابل VPS، خارج از سیستم‌عامل اجرا می‌کنند؛ بنابراین پورتی که در firewalld باز کرده‌اید، ممکن است همچنان در لایه‌های بالاتر (upstream) مسدود شود. راهنمای مقدماتی firewalld برای VPS در صورتی که این مدل برای شما جدید است، مباحث مربوط به zoneها و تفاوت بین runtime و permanent را پوشش می‌دهد.

گام 2: برچسب‌گذاری پورت برای SELinux

sudo semanage port -a -t ssh_port_t -p tcp 2222
sudo semanage port -l | grep ssh_port_t

-a یک انتساب پورت جدید اضافه می‌کند. -t ssh_port_t نوعی است که پورت‌های SSH با آن شناخته می‌شوند. دستور دوم تمام مواردی را که ssh_port_t اکنون پوشش می‌دهد فهرست می‌کند؛ بنابراین پیش از آنکه به سراغ daemon بروید، می‌توانید تأیید کنید که شماره پورت شما با موفقیت ثبت شده است.

چرا SELinux پورت را مسدود می‌کند

سیستم SELinux (مخفف Security-Enhanced Linux) به هر شیء در سیستم یک برچسب اختصاص می‌دهد و شماره پورت‌های TCP نیز مانند سایر اشیاء هستند. دیمون SSH در دامنه‌ای به نام sshd_t اجرا می‌شود. خط‌مشی (Policy) به sshd_t اجازه می‌دهد به پورت‌های TCP با برچسب ssh_port_t متصل شود و به‌صورت پیش‌فرض، تنها پورتی که این برچسب را دارد 22 است. اگر از دیمون بخواهید به پورت 2222 متصل شود، هسته سیستم برچسب را بررسی می‌کند، نوع عمومی اختصاص‌یافته به آن شماره را در خط‌مشی می‌یابد و مجوز name_bind را برای سوکت رد می‌کند.

به همین دلیل است که این خطا شبیه مشکلات فایروال نیست. هسته پیش از آنکه سوکتِ در حال گوش دادن (listening socket) ایجاد شود، درخواست را رد می‌کند؛ بنابراین sshd خطا را گزارش کرده و خارج می‌شود. مشکل فایروال دقیقاً برعکس است: دیمون در حال اجرا و سالم است، اما بسته‌ها در مسیر ورود دور ریخته می‌شوند.

دستور getenforce به شما می‌گوید که سیستم در چه حالتی قرار دارد. در حالت Permissive، یک مورد مسدودسازی ثبت می‌شود اما اعمال نمی‌گردد؛ بنابراین تغییر پورت در ظاهر کار می‌کند، اما روزی که شخصی دستور setenforce 1 را اجرا کند یا سیستم در حالت enforcing راه‌اندازی مجدد شود، با مشکل مواجه خواهید شد. در هر صورت، پورت را برچسب‌گذاری کنید. راهنمای اصول اولیه SELinux برای سرور به‌طور کامل به حالت‌ها، کانتکست‌ها و بولین‌ها می‌پردازد. پورت‌ها تنها اشیایی نیستند که با این مشکل مواجه می‌شوند؛ همین خط‌مشی مانع از خواندن یک دایرکتوری mount شده از میزبان توسط کانتینر می‌شود تا زمانی که آن مسیر مجدداً برچسب‌گذاری شود. به همین دلیل است که نصب Docker روی Rocky Linux یا AlmaLinux شامل یک مرحله مربوط به SELinux است که در راهنماهای Ubuntu هرگز به آن اشاره نمی‌شود.

گام 3: تنظیم پورت در پیکربندی sshd

در Rocky Linux 9 و 10، AlmaLinux 9 و 10، و نسخه‌های فعلی Fedora، فایل /etc/ssh/sshd_config با یک خط include شروع می‌شود؛ بنابراین جای مناسب برای اعمال تغییرات شما، یک فایل drop-in است. با این روش، به‌روزرسانی‌های بسته با ویرایش شما تداخل پیدا نمی‌کنند.

grep -n '^Include' /etc/ssh/sshd_config
echo 'Port 2222' | sudo tee /etc/ssh/sshd_config.d/10-port.conf
sudo sshd -t

اگر grep هیچ خط Include پیدا نکرد—که در Rocky Linux 8 و سایر ایمیج‌های قدیمی‌تر این‌گونه است—عبارت Port 2222 را مستقیماً در /etc/ssh/sshd_config قرار دهید. ابزار sshd -t کل پیکربندی، شامل فایل‌های drop-in را تحلیل کرده و خطاهای دستوری را گزارش می‌دهد. پیش از restart کردن، هر خطایی که گزارش می‌شود را رفع کنید؛ زیرا پیکربندی‌ای که در تحلیل آن خطا وجود داشته باشد، باعث می‌شود daemon پس از restart بالا نیاید.

ممکن است Port بیش از یک‌بار ظاهر شود و sshd روی تمام پورت‌های لیست‌شده گوش می‌دهد. نگه داشتن Port 22 در کنار Port 2222 برای روز اول، یک راهکار ایمنی کم‌هزینه است، به شرطی که حذف آن را فراموش نکنید.

آیا سرویس sshd شما توسط یک socket unit اجرا می‌شود؟

برخی از ایمیج‌ها به جای اجرای SSH به عنوان یک سرویس همیشگی، آن را از طریق قابلیت socket activation در systemd راه‌اندازی می‌کنند. در مواردی که این پیکربندی اعمال شده باشد، systemd مدیریت socket شنونده را بر عهده می‌گیرد و اتصالات را به sshd تحویل می‌دهد؛ بنابراین خط Port در فایل sshd_config کاملاً نادیده گرفته می‌شود. پیش از هرگونه راه‌اندازی مجدد، این مورد را بررسی کنید:

systemctl is-enabled sshd.socket

پاسخ enabled به این معناست که پورت در socket unit تنظیم شده است، نه در sshd_config:

sudo systemctl edit sshd.socket
[Socket]
ListenStream=
ListenStream=2222

مقدار خالی ListenStream= الزامی است. مقادیر در فایل‌های drop-in با هم جمع می‌شوند، بنابراین بدون یک مقداردهی خالی برای پاک‌سازی لیست، سوکت همچنان روی پورت 22 و همچنین 2222 گوش می‌دهد. این تغییر را با sudo systemctl daemon-reload و سپس sudo systemctl restart sshd.socket اعمال کنید. اگر این unit روی سرور شما غیرفعال است یا وجود ندارد، این بخش برای شما کاربردی ندارد.

گام 4: راه‌اندازی مجدد و تست از ترمینال دوم

sudo systemctl restart sshd
systemctl status sshd
sudo ss -tlnp | grep sshd

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

ssh -p 2222 youruser@203.0.113.10

فقط پس از اطمینان از موفقیت‌آمیز بودن ورود دوم، نشست اول را ببندید. اگر اتصال برقرار نشد، همچنان یک shell در اختیار دارید که می‌توانید تغییرات را از طریق آن بازگردانید. این عادت ساده، تفاوت بین یک تغییر 5 دقیقه‌ای و صرف یک بعدازظهر کامل در کنسول ارائه‌دهنده خدمات است.

مسدود شدن توسط فایروال یا عدم دسترسی SELinux؟ چگونه تفاوت آن‌ها را تشخیص دهیم

از دیدگاه لپ‌تاپ شما، این دو خطا تقریباً یکسان به نظر می‌رسند. اما در سمت سرور، این دو کاملاً متفاوت هستند.

  • اگر systemctl status sshd نشان می‌دهد که واحد (unit) با شکست مواجه شده است، یعنی دیمون (daemon) هرگز سوکت خود را دریافت نکرده است. این یک خطای پیکربندی یا عدم دسترسی SELinux است.
  • اگر واحد فعال است و ss -tlnp نشان می‌دهد که sshd به پورت جدید متصل شده است، دیمون مشکلی ندارد و مشکل در مسیر شبکه است: firewalld، فایروال جداگانه ارائه‌دهنده، یا آدرس و پورتی که شماره‌گیری کرده‌اید.

برای مورد SELinux، به‌جای حدس زدن، رکورد audit را بخوانید:

sudo ausearch -m AVC -ts recent
sudo journalctl -u sshd -n 50 --no-pager

یک عدم دسترسی name_bind در کلاس tcp_socket، نام پردازش را در comm="sshd"، شماره پورت را در src= و برچسبی که پورت در حال حاضر دارد را در tcontext= مشخص می‌کند. آن فیلد آخر پاسخ شماست. هر چیزی غیر از ssh_port_t به این معنی است که مرحله 2 برای پورتی که استفاده می‌کنید اعمال نشده است؛ که معمولاً به دلیل اشتباه تایپی در شماره پورت یا استفاده از پروتکل اشتباه است. اگر ترجیح می‌دهید sealert رکورد را به یک جمله تبدیل کند، setroubleshoot-server را نصب کنید.

پیامی که خود sshd هنگام امتناع هسته از bind شدن می‌نویسد، به این صورت است:

error: Bind to port 2222 on 0.0.0.0 failed: Permission denied.

Permission denied روی پورتی بالاتر از 1024، که برای bind شدن به دسترسی root نیاز ندارد، امضای SELinux است. Address already in use در همان خط یک خطای متفاوت است: پردازش دیگری پورت را اشغال کرده است. از سمت کلاینت، تفاوت بین connection refused و connection timed out این دو مورد شبکه را از هم جدا می‌کند، زیرا refusal به این معنی است که بسته شما به میزبان رسیده و چیزی در حال گوش دادن نبوده است، در حالی که timeout به این معنی است که هیچ پاسخی دریافت نشده است.

بستن پورت 22 و به‌روزرسانی کلاینت‌ها

هنگامی که چندین ورود موفقیت‌آمیز از طریق پورت جدید انجام دادید، پورت 22 را ببندید:

sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

برچسب SELinux روی پورت 22 را تغییر ندهید. این برچسب بخشی از سیاست پایه (base policy) است و زمانی که فایروال دیگر بسته‌ای را از این پورت عبور ندهد، هیچ دسترسی خاصی ایجاد نمی‌کند.

سپس کلاینت‌ها را اصلاح کنید، زیرا تمام ابزارهایی که پورت پیش‌فرض را فرض می‌کردند، اکنون نیاز به تنظیم مجدد دارند. به جای تایپ همیشگی -p، یک بار آن را در ~/.ssh/config روی سیستم خود قرار دهید:

Host myvps
  HostName 203.0.113.10
  Port 2222
  User youruser

scp، sftp، rsync و Ansible همگی این فایل را می‌خوانند. اما کارهای پشتیبان‌گیری (Backup jobs)، بررسی‌های مانیتورینگ و اسکریپت‌های cron که پورت 22 را به صورت hardcode دارند، این فایل را نمی‌خوانند؛ بنابراین تا زمانی که تغییرات در ذهن شما تازه است، آن‌ها را پیدا و اصلاح کنید.

تغییر پورت چه دستاوردی دارد و چه دستاوردی ندارد

این کار باعث کاهش نویز در لاگ‌ها می‌شود. اسکنرهای خودکار دائماً پورت 22 را هدف قرار می‌دهند و تغییر آن باعث حذف بخش بزرگی از این لاگ‌ها از journal می‌شود که مشاهده رویدادهای واقعی را آسان‌تر می‌کند. این یک کنترل امنیتی نیست. هر اسکنری که محدوده کامل پورت‌ها را بررسی کند، daemon شما را پیدا کرده و بنر نسخه آن را می‌خواند. تغییر پورت را به عنوان یک اقدام نظافتی در نظر بگیرید و حفاظت واقعی را با استفاده از احراز هویت مبتنی بر کلید و غیرفعال کردن ورود با رمز عبور پیاده‌سازی کنید، که راهنمای مقاوم‌سازی SSH برای VPS آن را گام‌به‌گام توضیح می‌دهد.

تمام موارد فوق در هر دو توزیع اصلی بازسازی‌شده از RHEL به یک شکل عمل می‌کنند، زیرا هر دو از منابع یکسانی ساخته شده‌اند. اگر هنوز در حال انتخاب بین آن‌ها هستید، مقایسه Rocky Linux و AlmaLinux را ببینید. وجود دو توزیع تقریباً یکسان به این دلیل است که CentOS در سال 2020 دیگر به شکل سابق ارائه نشد؛ داستانی که به‌طور کامل در ماجرای Red Hat به CentOS و سپس Rocky و AlmaLinux روایت شده است. پیش از دنبال کردن هر راهنمای قدیمی، با دستور cat /etc/os-release بررسی کنید که دقیقاً چه نسخه‌ای در اختیار دارید. راهنماهایی که برای Rocky Linux 8 نوشته شده‌اند هنوز رتبه خوبی دارند و مراحل semanage و firewall-cmd آن‌ها همچنان صحیح است، اما Rocky 8 فاقد خط include در sshd_config.d و unit سوکت است، بنابراین بخش sshd در آن راهنماها با یک سیستم امروزی مطابقت ندارد.

باید پورت جدید را به fail2ban معرفی کنید

نرم‌افزار fail2ban در مخازن پایه موجود نیست. این بسته از طریق EPEL (مخازن اضافی برای توزیع‌های Enterprise Linux) ارائه می‌شود:

sudo dnf install -y epel-release
sudo dnf install -y fail2ban fail2ban-firewalld

زیربسته fail2ban-firewalld باعث می‌شود fail2ban مسدودسازی‌ها را از طریق firewalld اعمال کند؛ این دقیقاً همان چیزی است که در سیستمی که مدیریت قوانین فایروال بر عهده firewalld است، به آن نیاز دارید.

پیکربندی پیش‌فرض jail در sshd مقدار port = ssh را تنظیم می‌کند و این نام از طریق /etc/services به پورت 22 ترجمه می‌شود. پس از تغییر پورت، این jail به پورتی نظارت می‌کند که کسی به آن حمله نمی‌کند؛ بنابراین در حالی که تلاش‌های ناموفق ورود در پورت 2222 انباشته می‌شوند، هیچ‌کس مسدود نخواهد شد. پورت را به‌صورت عددی در /etc/fail2ban/jail.local تنظیم کنید:

[sshd]
enabled = true
port = 2222
backend = systemd
maxretry = 5
bantime = 3600

نرم‌افزار backend = systemd خطاها را به‌جای /var/log/secure از journal می‌خواند که در نصب‌های مینیمال (که ممکن است rsyslog در آن‌ها موجود نباشد) انتخاب امن‌تری است. آن را با sudo systemctl enable --now fail2ban راه‌اندازی کنید و وضعیت jail را با sudo fail2ban-client status sshd بررسی نمایید. ساختار نگارشی jail همان چیزی است که در راهنمای راه‌اندازی fail2ban برای SSH در اوبونتو 24.04 استفاده شده است. تنها منبع بسته و اکشن مسدودسازی (ban action) تفاوت دارند.

اهمیت وصله‌گذاری بیش از شماره پورت است

سروری که پورت SSH آن تغییر کرده اما 4 ماه است که وصله‌های امنیتی را دریافت نکرده، وضعیت بدتری نسبت به سروری دارد که روی پورت 22 قرار دارد اما هر شب به‌طور خودکار وصله می‌شود. در همان نشست کاری، زمانی که دسترسی root دارید، قابلیت unattended updates را فعال کنید: به‌روزرسانی خودکار dnf در Rocky Linux و AlmaLinux تایمرها و تفاوت بین دانلود و اعمال خودکار به‌روزرسانی‌ها را توضیح می‌دهد. نصب یک به‌روزرسانی باعث نمی‌شود دیمون‌هایی که در حال اجرای کد قدیمی هستند بلافاصله ریستارت شوند؛ بنابراین، بررسی سرویس‌هایی که نیاز به ریستارت یا راه‌اندازی مجدد دارند، هر زمان که openssh-server یا کتابخانه‌های وابسته به آن در لیست به‌روزرسانی‌ها قرار می‌گیرند، ارزش صرف یک دقیقه زمان را دارد.

FAQ

چرا پس از تغییر پورت در Rocky Linux، سرویس sshd اجرا نمی‌شود؟

تقریباً همیشه دلیل این مشکل، نبود برچسب (label) پورت در SELinux است. sshd در دامنه sshd_t محدود شده است و سیاست‌های امنیتی فقط اجازه می‌دهند به پورت‌هایی متصل شود که با ssh_port_t برچسب‌گذاری شده‌اند؛ این برچسب به‌صورت پیش‌فرض فقط شامل پورت 22 است. هسته سیستم‌عامل از bind شدن جلوگیری می‌کند، بنابراین daemon به‌جای گوش دادن روی پورت، متوقف می‌شود و journalctl -u sshd خطی با فرمت error: Bind to port 2222 on 0.0.0.0 failed: Permission denied. را ثبت می‌کند. دستور sudo semanage port -a -t ssh_port_t -p tcp 2222 را با شماره پورت خود اجرا کنید و سپس سرویس را restart نمایید. اگر semanage یافت نشد، ابتدا policycoreutils-python-utils را نصب کنید.

آیا اگر SELinux در حالت permissive باشد، همچنان به semanage نیاز دارم؟

بله. در حالت permissive، پیام عدم دسترسی ثبت می‌شود اما اتصال همچنان مجاز است، بنابراین به نظر می‌رسد تغییرات به‌درستی اعمال شده‌اند. اما برچسب همچنان وجود ندارد. لحظه‌ای که شخصی دستور setenforce 1 را اجرا کند، یا سرور با تنظیمات SELINUX=enforcing در فایل /etc/selinux/config بوت شود، sshd دیگر روی آن پورت اجرا نخواهد شد. افزودن برچسب تنها یک دستور نیاز دارد و از خطایی که ممکن است هفته‌ها بعد بدون دلیل مشخص بروز کند، جلوگیری می‌کند.

پورت برچسب‌گذاری شده و sshd در حال اجراست، پس چرا اتصال من با timeout مواجه می‌شود؟

اجرا شدن daemon به این معناست که SELinux مشکلی ندارد، بنابراین بسته‌های شبکه در مسیر ورود مسدود می‌شوند. وضعیت sudo firewall-cmd --list-ports را برای پورت خود بررسی کنید و مطمئن شوید که پس از افزودن قانون --permanent، دستور firewall-cmd --reload را اجرا کرده‌اید؛ زیرا قوانین permanent به‌تنهایی روی فایروال در حال اجرا اعمال نمی‌شوند. سپس پنل کنترل میزبان خود را برای بررسی فایروال شبکه که خارج از VPS قرار دارد، چک کنید. این دومین جایی است که کاربران معمولاً در آن مسدود می‌شوند و هیچ ابزاری در داخل سیستم‌عامل این مسدودسازی را نشان نمی‌دهد.

به‌جای پورت 22 از چه پورتی استفاده کنم؟

هر پورت TCP آزاد بین 1024 تا 65535. از انتخاب 2222 و 22222 در سرورهای واقعی خودداری کنید، زیرا اسکنرها بلافاصله پس از 22، این پورت‌ها را نیز امتحان می‌کنند. با دستور sudo ss -tlnp آزاد بودن شماره پورت را تأیید کنید، با دستور sudo semanage port -l مطمئن شوید که سیاست‌های SELinux قبلاً آن را اشغال نکرده باشند، و از انتخاب پورت‌هایی که به سرویس‌هایی که ممکن است بعداً نصب کنید اختصاص دارند، پرهیز کنید. انتخاب یک شماره بزرگ و غیرقابل‌حفظ‌شدن مشکلی ندارد، زیرا آن را یک‌بار در ~/.ssh/config وارد می‌کنید و دیگر نیازی به تایپ مجدد آن نخواهید داشت.