Skip to content

Latest commit

 

History

History
217 lines (139 loc) · 13.4 KB

File metadata and controls

217 lines (139 loc) · 13.4 KB

Language / زبان: English | فارسی

عیب‌یابی SSH Plus Manager

نصب و اجرای اولیه

خطای menu: command not found

نصب‌کننده منو را در مسیر /bin/menu قرار می‌دهد. اگر PATH شما شامل /bin نیست، اجرا کنید:

/bin/menu

یا /bin را به PATH اضافه کنید، یا یک alias بسازید:

alias menu='/bin/menu'

خطای curl: command not found یا wget: command not found هنگام نصب

نصب‌کنندهٔ تک‌خطی به curl یا wget نیاز دارد. ابتدا یکی از آن‌ها را نصب کنید:

  • Debian/Ubuntu: apt update && apt install -y curl یا apt install -y wget
  • CentOS/RHEL: yum install -y curl یا yum install -y wget

سپس دوباره دستور نصب را اجرا کنید (curl یا wget، بسته به این‌که کدام را نصب کرده‌اید).

خطای "Could not fetch version file" یا نسخه به‌صورت v0 نمایش داده می‌شود

  • نصب‌کننده برای دانلود فایل version از مخزن به اینترنت نیاز دارد. اگر دریافت فایل ناموفق باشد، نسخه 0 باقی می‌ماند و بررسی به‌روزرسانی‌ها درست کار نمی‌کند.
  • مطمئن شوید سرور می‌تواند به https://raw.githubusercontent.com دسترسی داشته باشد (و این‌که curl یا wget نصب است). اگر پشت پراکسی یا فایروال هستید، ابتدا آن را برطرف کنید.
  • بعد از نصب یا به‌روزرسانی موفق، نسخه در مسیرهای /etc/SSHPlus/version و /bin/version ذخیره می‌شود. در صورت نیاز می‌توانید آن را دستی تنظیم کنید، مثلاً: echo "1.0.8" | sudo tee /etc/SSHPlus/version /bin/version

بنر و IP

عدم وجود IPv4 یا IP در منو یا در صفحه "SSH ACCOUNT CREATED"

  • اسکریپت ابتدا از فایل /etc/IP استفاده می‌کند. این فایل توسط نصب‌کننده (یا Install/list) با استفاده از یک سرویس عمومی «what is my IP» پر می‌شود.

  • اگر خالی یا نادرست است:

    • مطمئن شوید سرور دسترسی خروجی به اینترنت دارد و می‌تواند مثلاً به ipv4.icanhazip.com یا whatismyip.akamai.com دسترسی پیدا کند.
    • مطمئن شوید wget یا curl نصب است (نصب‌کننده باید آن‌ها را نصب کند). اگر نبود: apt install -y wget curl
  • می‌توانید /etc/IP را دستی تنظیم کنید: echo "YOUR.SERVER.IP" | sudo tee /etc/IP

بنر یا صفحه "Create user" عبارت "IP:" را بدون مقدار بعد از آن نشان می‌دهد.

همانند بالا: اسکریپت فایل /etc/IP را می‌خواند. آن را طبق بخش قبل مقداردهی کنید.


تست سرعت [08]

بعد از انتخاب گزینه [08] SPEEDTEST بلافاصله خارج می‌شود یا خطا نشان می‌دهد.

  • [08] از speedtest-cli استفاده می‌کند. اگر موجود نباشد، منو تلاش می‌کند آن را نصب کند (با pip یا apt) و سپس از شما می‌خواهد Enter بزنید. اگر نصب ناموفق باشد، پیشنهاد می‌دهد: pip3 install speedtest-cli یا apt install speedtest-cli
  • در صورت نیاز به‌عنوان root نصب کنید: pip3 install speedtest-cli یا apt install -y speedtest-cli
  • اگر speedtest-cli اجرا می‌شود ولی نتیجه‌ای نشان نمی‌دهد، ممکن است سرور نتواند به speedtest.net دسترسی داشته باشد. اتصال خروجی را بررسی کرده و دوباره تلاش کنید.

نتیجه Speedtest پیام "Error output" یا "Check connectivity to speedtest.net" است.

  • اسکریپت در حال نمایش خطای خود speedtest-cli است. دلایل رایج:

    ۱. فایروال یا شبکه دسترسی به speedtest.net را مسدود کرده است.

    ۲. VPS دسترسی خروجی به اینترنت ندارد.

    ۳. محدودیت نرخ یا اختلال موقت سرویس. بعداً دوباره تلاش کنید یا از شبکهٔ دیگری امتحان کنید.


کاربران و محدودیت‌ها

در "Create user" یا "Remove user" کاربری که انتظار دارم نمایش داده نمی‌شود.

  • فهرست کاربران از حساب‌های فعلی سیستم و پایگاه داده متمرکز $HOME/users.db ساخته می‌شود. اگر کاربری را در سطح سیستم حذف کرده‌اید (مثلاً با userdel)، ممکن است تا زمانی که اسکریپت آن را به‌روزرسانی نکند (مثلاً از طریق "Remove user" یا "Expiration manager") رکوردش همچنان در $HOME/users.db باقی بماند.

تغییر رمز عبور یا محدودیت ظاهرا اعمال نمی‌شود.

  • برای رمز عبور: سرویس از chpasswd (غیرتعاملی) استفاده می‌کند و سپس $HOME/users.db را به‌روزرسانی می‌کند. مطمئن شوید در یک نشست قدیمی نگاه نمی‌کنید؛ در یک ترمینال جدید دوباره وارد شوید.
  • برای محدودیت اتصال: محدودیت در $HOME/users.db ذخیره شده و توسط منطق مدیر اعمال می‌شود.

خطاهای SSH، پورت‌ها و فایروال (چندپورته / UFW)

پورت‌های SSH را از منو اضافه کرده‌ام اما هنوز نمی‌توانم وصل شوم.

۱. UFW: اگر UFW فعال است، هر پورت SSH باید مجاز شود. راه‌اندازی چندپورته به UFW نیاز دارد؛ اگر UFW نصب نباشد، اسکریپت ادامه نمی‌دهد.

۲. پورت‌ها در سه جا: برای کارکرد چندپورتهٔ SSH نیاز دارید:

-sshd_config — خطوط Port برای هر پورت.

-systemdssh.socket (یا معادل آن) که روی آن پورت‌ها گوش می‌دهد (مثلاً با ListenStream در یک override).

-UFW — دستور ufw allow <port>/tcp برای هر پورت.

اگر هرکدام از این‌ها وجود نداشته باشد یا نادرست باشد، آن پورت کار نخواهد کرد. برای مراحل کامل به SSH-MULTIPORT.fa.md مراجعه کنید.

هنگام افزودن پورت‌ها پیام "Configuration validation failed" یا "Invalid SSH configuration" می‌بینم.

  • اسکریپت چندپورته دستور sshd -t (یا مشابه) را برای بررسی پیکربندی اجرا می‌کند. اگر ناموفق باشد، ممکن است تغییرات را برگرداند.

  • دلایل رایج:

    ۱. پورت از قبل در حال استفاده است — پورتی که از قبل در sshd_config یا واحد سوکت وجود دارد را اضافه نکنید.

    ۲. خطوط Port تکراری — هر پورت فقط یک‌بار.

    ۳. پوشه‌های مفقود — مثلاً "Missing privilege separation directory: /run/sshd". در صورت نیاز بسازید: mkdir -p /run/sshd && chmod 0755 /run/sshd

  • همیشه بر اساس پیام خطای دقیق اصلاح کنید، سپس خودتان sshd -t را اجرا کنید. وقتی هیچ خروجی نداشت، پیکربندی معتبر است.

بعد از تغییر پورت‌های SSH دسترسی‌ام قطع شده است.

  • اگر پورت اصلی SSH را تغییر داده‌اید و آن را در فایروال مجاز نکرده‌اید، یا قبل از اطمینان از کارکرد پورت جدید پورت قدیمی را بسته‌اید، ممکن است دسترسی را از دست بدهید.
  • پیشگیری: از روند افزودن چندپورته استفاده کنید تا SSH همچنان روی 22 (یا پورت فعلی شما) گوش بدهد و فقط پورت‌های جدید اضافه شوند. قبل از تست، پورت جدید را در UFW مجاز کنید. فقط وقتی مطمئن شدید پورت جدید کار می‌کند، پورت قدیمی را حذف یا تغییر دهید.
  • بازیابی: از «Console» یا «Recovery» ارائه‌دهنده (VNC/خارج از باند) برای ورود استفاده کنید و sshd_config، systemd و UFW را اصلاح کنید، یا از پشتیبان بازیابی کنید.

به‌روزرسانی‌ها و وابستگی‌ها

در [19] UPDATE SCRIPT نسخهٔ فعلی و آخرین نسخه هر دو v0 هستند.

  • نسخه از /etc/SSHPlus/version یا /bin/version خوانده می‌شود و «آخرین نسخه» از فایل version مخزن دریافت می‌شود.

  • اگر هر دو 0 هستند، یا:

    • فایل‌های نسخهٔ نصب‌شده خالی یا مفقودند، یا
    • سرور نمی‌تواند به مخزن دسترسی پیدا کند (مثلاً raw.githubusercontent.com).
  • راه‌حل: مطمئن شوید HTTPS خروجی کار می‌کند و wget/curl نصب هستند. سپس دوباره [19] را اجرا کنید، یا نسخه را طبق بخش «Script says Could not fetch version file» در بالا دستی تنظیم کنید.

هنگام نصب پیام "Could not install: …" نمایش داده می‌شود.

  • نصب‌کننده برای وابستگی‌ها از apt install استفاده می‌کند. اگر نصب بسته‌ای ناموفق باشد (پیدا نشدن یا خطا)، در انتها فهرست می‌شود.
  • آن‌ها را خودتان نصب کنید، مثلاً: apt update && apt install -y wget curl bc screen nano unzip zip lsof net-tools dos2unix nload jq figlet python3 python3-pip
  • پروسه speedtest-cli ابتدا با apt و سپس با pip انجام می‌شود. اگر هر دو ناموفق بودند، دستی نصب کنید: pip3 install speedtest-cli

خطاهای رنگ یا "command not found" برای get_color_code، banner_info و غیره.

  • این‌ها از ابزار کمکی colors می‌آیند. منو آن را از /etc/SSHPlus/colors یا /bin/colors بارگذاری می‌کند.
  • اگر منو را از یک کپی اجرا کنید که توسط نصب‌کننده نصب نشده است (مثلاً فقط بخشی از فایل‌ها زیر /bin باشد)، ممکن است colors موجود نباشد. نصب‌کننده یا [19] UPDATE SCRIPT را دوباره اجرا کنید تا همه ماژول‌ها (از جمله colors) طبق انتظار در /bin یا /etc/SSHPlus قرار گیرند.

تنظیمات سرور [13]

تغییر رمز عبور روت ناموفق است.

  • باید منو را به‌عنوان root اجرا کنید. اسکریپت از chpasswd استفاده می‌کند که به دسترسی root نیاز دارد.
  • اگر پیام "Failed to change root password" دریافت می‌کنید، با whoami یا id بررسی کنید که واقعاً به‌عنوان root اجرا می‌کنید.

تغییر منطقهٔ زمانی پایدار نمی‌ماند.

  • اسکریپت روی سیستم‌های systemd از timedatectl استفاده می‌کند. اگر timedatectl در دسترس نباشد، به لینک‌کردن /etc/localtime برمی‌گردد.

  • بررسی کنید فایل منطقهٔ زمانی وجود دارد: ls /usr/share/zoneinfo/YOUR/TIMEZONE

  • در برخی کانتینرهای مینیمال، داده‌های منطقهٔ زمانی نصب نیستند: apt install -y tzdata


خطاهای SSH چندپورته و UFW

برای مراحل دقیق مربوط به:

  • مجاز کردن پورت‌های SSH در UFW (مثلاً ۲۲، ۳۳۹۸، ۴۴۳، ۸۰، ۸۰۸۰، ۸۴۴۳، ۵۳، ۹۹۳، ۹۹۵)
  • ویرایش sshd_config و ssh.socket در systemd
  • بارگذاری مجدد systemd و بررسی این‌که SSH روی پورت‌های درست گوش می‌دهد

به SSH-MULTIPORT.fa.md مراجعه کنید.

نصب‌کننده، در صورت وجود UFW، برخی پورت‌ها را مجاز می‌کند (مثلاً ۴۴۳، ۸۰، ۳۱۲۸، ۸۷۹۹، ۸۰۸۰). برای SSH چندپورته باید مطمئن شوید هر پورتی که استفاده می‌کنید به‌طور صریح مجاز شده است، مثلاً:

ufw allow 22/tcp
ufw allow 3398/tcp
ufw allow 443/tcp
ufw allow 80/tcp
ufw allow 8080/tcp
ufw allow 8443/tcp
ufw allow 53/tcp
ufw allow 993/tcp
ufw allow 995/tcp
ufw reload

دریافت کمک بیشتر