| hussh(1) | General Commands Manual | hussh(1) |
نام (NAME)
hussh - دیمن SSH ایمن از نظر حافظه برای هدایت محدود TCP
خلاصه دستور (SYNOPSIS)
hussh [گزینهها]
توضیحات (DESCRIPTION)
دستور hussh یک سرور حداقلی SSH است که فقط بازارسال TCP ("direct-tcpip") را پیادهسازی میکند. این ابزار برای استفاده به عنوان تونل، پروکسی یا میزبان پرش (jump host) محدود SSH طراحی شده است که در آن نشستهای ورود تعاملی و اجرای فرمان از راه دور مورد نیاز یا مطلوب نیستند. تنها احراز هویت با کلید عمومی پشتیبانی میشود و ورود با گذرواژه هرگز پذیرفته نخواهد شد. یک حالت اختیاری هانیپات (honeypot) با تعامل اندک میتواند تلاشهای ناخواسته احراز هویت با گذرواژه را ثبت یا گزارش کند.
نشستهای شل تعاملی، تخصیص PTY و اجرای فرمان از راه دور همگی به طور صریح پشتیبانی نمیشوند.
به طور پیشفرض، hussh به `[::]:2` متصل میشود و در پیشزمینه اجرا میگردد.
گزینهها (OPTIONS)
-c, --config مسیر
-B, --bind نشانی
-K, --keygen
-v, --verbose
--help
--version
پیکربندی (CONFIGURATION)
محل پیشفرض فایل پیکربندی /etc/hussh.conf است. یک پیکربندی حداقلی به شکل زیر خواهد بود:
[[rules]]
ssh_keys = [
"ssh-ed25519 AAAAC3Nyourkeyhere",
]
# مقصدهای مجاز برای اتصال
permit = ["*"]
یک پیکربندی مفصلتر میتواند به شکل زیر باشد:
[sshd]
# تغییر نشانی اتصال ssh (پورت 22 روی ipv4 + ipv6)
bind_addr = "[::]:22"
[[rules]]
# به جای اجازه دادن به هر نام کاربری، یک مقدار مشخص الزامی است
username = "proxy"
ssh_keys = [
"ssh-ed25519 AAAAC3Nyourkeyhere",
"ssh-ed25519 AAAAC3Nanotherkey",
]
# مقصدهای مجاز برای اتصال
permit = [
# همه پورتها در مقصدهای مشخص
"example.com:*",
"127.0.0.1:*",
# پالایش بر اساس پورت
"*:443",
]
# اگر قاعده قبلی مطابقت نداشت، این قاعده را بررسی کن:
[[rules]]
ssh_keys = [
"ssh-ed25519 AAAAC3Nyourkeyhere",
]
permit = [
# فقط به مکانهای مشخص اجازه داده شود
"127.0.0.1:8080",
"[::1]:8080",
]
نحو قوانین (RULES SYNTAX)
گزینه permit= هم مقصدهای مشخص و هم عبارات عامهنما (wildcard) را مجاز میشمارد. موارد زیر معتبر هستند:
HOST:PORT, IP:PORT
نمونه: example.com:443, 127.0.0.1:22, [::1]:22
HOST:*, IP:*
نمونه: example.com:*, 127.0.0.1:*, [::1]:*
*:PORT
نمونه: *:443
*:*, *
نمونه: *:*, *
مثالهای کلاینت اساساچ (SSH CLIENT EXAMPLES)
راهاندازی به عنوان میزبان پرش (jump host) برای دومین دیمن SSH که فقط روی localhost فعال است:
cat >> ~/.ssh/config <<EOF Host example.com Hostname 192.0.2.37 ProxyCommand ssh -p 2 -W 127.0.0.1:%p -o ProxyCommand=none %h EOF
بازارسال یک اتصال TCP از طریق ssh و اتصال آن به stdin/stdout:
راهاندازی یک سرور پروکسی socks5 روی localhost:1080. تمامی اتصالات از طریق سرور ssh بازارسال میشوند:
شنود اتصالات ورودی روی localhost:1337 و بازارسال آنها به localhost:8080 سرور ssh:
حالت هانیپات (HONEYPOT MODE)
علاوه بر عمل به عنوان یک پروکسی شبکه، hussh میتواند به عنوان یک هانیپات (Honeypot) اساساچ کمتعامل نیز به کار رود تا به طور غیرفعال از نویز اینترنت فهرستهای ترکیب نام کاربری و رمز (combolists) بسازد. در صورت فعال بودن، تلاشهای ناخواسته برای احراز هویت با گذرواژه، شامل نام کاربری، گذرواژه و نشانی مبدأ را ثبت میکند. این اطلاعات میتوانند در لاگ ثبت شده یا به صورت json به یک مقصد دوردست HTTP ارسال شوند:
# /etc/hussh.conf
[honeypot]
# تغییر بنر سرور SSH به یک رشته سفارشی
# توجه داشته باشید مقادیر نامعتبر ممکن است کلاینتها را سردرگم کرده یا دچار اختلال کند
spoof_server_id = "SSH-2.0-anything"
# ثبت لاگ تلاشهای ناخواسته احراز هویت با گذرواژه (شامل گذرواژه) در stderr
log_bruteforce_passwords = true
# گزارش تلاشهای ناخواسته احراز هویت با گذرواژه به یک سرور از راه دور با متد HTTP POST به صورت json:
# {"username":"root","password":"123456","src":"192.0.2.34:56789"}
report_url_bruteforce_passwords = "https://example.com/report"
# علاوه بر تلاشهای ناخواسته احراز هویت با گذرواژه،
# اعلام پشتیبانی/فعال بودن احراز هویت با گذرواژه به کلاینتها
bait_password_bruteforce = true
نویسندگان (AUTHORS)
این برنامه در ابتدا توسط kpcyrd نوشته شده و در حال حاضر نیز توسط او نگهداری میشود. گزارشهای باگ و وصلهها در گیتهاب مورد استقبال قرار میگیرند:
| 2026-08-24 |