Language / زبان: English | فارسی
نصبکننده منو را در مسیر /bin/menu قرار میدهد. اگر PATH شما شامل /bin نیست، اجرا کنید:
/bin/menuیا /bin را به PATH اضافه کنید، یا یک alias بسازید:
alias menu='/bin/menu'نصبکنندهٔ تکخطی به 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، بسته به اینکه کدام را نصب کردهاید).
- نصبکننده برای دانلود فایل version از مخزن به اینترنت نیاز دارد. اگر دریافت فایل ناموفق باشد، نسخه 0 باقی میماند و بررسی بهروزرسانیها درست کار نمیکند.
- مطمئن شوید سرور میتواند به
https://raw.githubusercontent.comدسترسی داشته باشد (و اینکهcurlیاwgetنصب است). اگر پشت پراکسی یا فایروال هستید، ابتدا آن را برطرف کنید. - بعد از نصب یا بهروزرسانی موفق، نسخه در مسیرهای
/etc/SSHPlus/versionو/bin/versionذخیره میشود. در صورت نیاز میتوانید آن را دستی تنظیم کنید، مثلاً:echo "1.0.8" | sudo tee /etc/SSHPlus/version /bin/version
-
اسکریپت ابتدا از فایل
/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
همانند بالا: اسکریپت فایل /etc/IP را میخواند. آن را طبق بخش قبل مقداردهی کنید.
- [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-cli است. دلایل رایج:
۱. فایروال یا شبکه دسترسی به speedtest.net را مسدود کرده است.
۲. VPS دسترسی خروجی به اینترنت ندارد.
۳. محدودیت نرخ یا اختلال موقت سرویس. بعداً دوباره تلاش کنید یا از شبکهٔ دیگری امتحان کنید.
- فهرست کاربران از حسابهای فعلی سیستم و پایگاه داده متمرکز
$HOME/users.dbساخته میشود. اگر کاربری را در سطح سیستم حذف کردهاید (مثلاً باuserdel)، ممکن است تا زمانی که اسکریپت آن را بهروزرسانی نکند (مثلاً از طریق "Remove user" یا "Expiration manager") رکوردش همچنان در$HOME/users.dbباقی بماند.
- برای رمز عبور: سرویس از
chpasswd(غیرتعاملی) استفاده میکند و سپس$HOME/users.dbرا بهروزرسانی میکند. مطمئن شوید در یک نشست قدیمی نگاه نمیکنید؛ در یک ترمینال جدید دوباره وارد شوید. - برای محدودیت اتصال: محدودیت در
$HOME/users.dbذخیره شده و توسط منطق مدیر اعمال میشود.
۱. UFW: اگر UFW فعال است، هر پورت SSH باید مجاز شود. راهاندازی چندپورته به UFW نیاز دارد؛ اگر UFW نصب نباشد، اسکریپت ادامه نمیدهد.
۲. پورتها در سه جا: برای کارکرد چندپورتهٔ SSH نیاز دارید:
-sshd_config — خطوط Port برای هر پورت.
-systemd — ssh.socket (یا معادل آن) که روی آن پورتها گوش میدهد (مثلاً با ListenStream در یک override).
-UFW — دستور ufw allow <port>/tcp برای هر پورت.
اگر هرکدام از اینها وجود نداشته باشد یا نادرست باشد، آن پورت کار نخواهد کرد. برای مراحل کامل به SSH-MULTIPORT.fa.md مراجعه کنید.
-
اسکریپت چندپورته دستور
sshd -t(یا مشابه) را برای بررسی پیکربندی اجرا میکند. اگر ناموفق باشد، ممکن است تغییرات را برگرداند. -
دلایل رایج:
۱. پورت از قبل در حال استفاده است — پورتی که از قبل در
sshd_configیا واحد سوکت وجود دارد را اضافه نکنید.۲. خطوط Port تکراری — هر پورت فقط یکبار.
۳. پوشههای مفقود — مثلاً "Missing privilege separation directory: /run/sshd". در صورت نیاز بسازید:
mkdir -p /run/sshd && chmod 0755 /run/sshd -
همیشه بر اساس پیام خطای دقیق اصلاح کنید، سپس خودتان
sshd -tرا اجرا کنید. وقتی هیچ خروجی نداشت، پیکربندی معتبر است.
- اگر پورت اصلی SSH را تغییر دادهاید و آن را در فایروال مجاز نکردهاید، یا قبل از اطمینان از کارکرد پورت جدید پورت قدیمی را بستهاید، ممکن است دسترسی را از دست بدهید.
- پیشگیری: از روند افزودن چندپورته استفاده کنید تا SSH همچنان روی 22 (یا پورت فعلی شما) گوش بدهد و فقط پورتهای جدید اضافه شوند. قبل از تست، پورت جدید را در UFW مجاز کنید. فقط وقتی مطمئن شدید پورت جدید کار میکند، پورت قدیمی را حذف یا تغییر دهید.
- بازیابی: از «Console» یا «Recovery» ارائهدهنده (VNC/خارج از باند) برای ورود استفاده کنید و
sshd_config، systemd و UFW را اصلاح کنید، یا از پشتیبان بازیابی کنید.
-
نسخه از
/etc/SSHPlus/versionیا/bin/versionخوانده میشود و «آخرین نسخه» از فایل version مخزن دریافت میشود. -
اگر هر دو 0 هستند، یا:
- فایلهای نسخهٔ نصبشده خالی یا مفقودند، یا
- سرور نمیتواند به مخزن دسترسی پیدا کند (مثلاً
raw.githubusercontent.com).
-
راهحل: مطمئن شوید HTTPS خروجی کار میکند و wget/curl نصب هستند. سپس دوباره [19] را اجرا کنید، یا نسخه را طبق بخش «Script says Could not fetch version file» در بالا دستی تنظیم کنید.
- نصبکننده برای وابستگیها از
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
- اینها از ابزار کمکی colors میآیند. منو آن را از
/etc/SSHPlus/colorsیا/bin/colorsبارگذاری میکند. - اگر منو را از یک کپی اجرا کنید که توسط نصبکننده نصب نشده است (مثلاً فقط بخشی از فایلها زیر
/binباشد)، ممکن است colors موجود نباشد. نصبکننده یا [19] UPDATE SCRIPT را دوباره اجرا کنید تا همه ماژولها (از جملهcolors) طبق انتظار در/binیا/etc/SSHPlusقرار گیرند.
- باید منو را بهعنوان 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 (مثلاً ۲۲، ۳۳۹۸، ۴۴۳، ۸۰، ۸۰۸۰، ۸۴۴۳، ۵۳، ۹۹۳، ۹۹۵)
- ویرایش
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- مخزن: namnamir/SSH-Plus-Manager
- راهنما و گزینهها: USAGEfa.md
- SSH چندپورته و UFW: SSH-MULTIPORT.fa.md