hussh(1) General Commands Manual hussh(1)

hussh - دیمن SSH ایمن از نظر حافظه برای هدایت محدود TCP

hussh [گزینه‌ها]

دستور hussh یک سرور حداقلی SSH است که فقط بازارسال TCP ("direct-tcpip") را پیاده‌سازی می‌کند. این ابزار برای استفاده به عنوان تونل، پروکسی یا میزبان پرش (jump host) محدود SSH طراحی شده است که در آن نشست‌های ورود تعاملی و اجرای فرمان از راه دور مورد نیاز یا مطلوب نیستند. تنها احراز هویت با کلید عمومی پشتیبانی می‌شود و ورود با گذرواژه هرگز پذیرفته نخواهد شد. یک حالت اختیاری هانی‌پات (honeypot) با تعامل اندک می‌تواند تلاش‌های ناخواسته احراز هویت با گذرواژه را ثبت یا گزارش کند.

نشست‌های شل تعاملی، تخصیص PTY و اجرای فرمان از راه دور همگی به طور صریح پشتیبانی نمی‌شوند.

به طور پیش‌فرض، hussh به `[::]:2` متصل می‌شود و در پیش‌زمینه اجرا می‌گردد.

-c, --config مسیر

مسیر فایل پیکربندی TOML. برای حالت دیمن الزامی است.

-B, --bind نشانی

نشانی برای اتصال (نشانی سوکت). نمونه: `[::]:22`

-K, --keygen

تولید یک کلید خصوصی Ed25519 در قالب OpenSSH و چاپ آن در stdout، سپس خروج.

-v, --verbose

افزایش سطح جزئیات لاگ. برای افزایش بیشتر جزئیات تکرار کنید.

--help

نمایش راهنمای دستور و خروج.

--version

نمایش نسخه و خروج.

محل پیش‌فرض فایل پیکربندی /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",
]

گزینه permit= هم مقصدهای مشخص و هم عبارات عامه‌نما (wildcard) را مجاز می‌شمارد. موارد زیر معتبر هستند:

HOST:PORT, IP:PORT

تطابق دقیق نشانی IP یا نام میزبان و شماره پورت.

نمونه: example.com:443, 127.0.0.1:22, [::1]:22

HOST:*, IP:*

تطابق دقیق نشانی IP یا نام میزبان و هر شماره پورتی.

نمونه: example.com:*, 127.0.0.1:*, [::1]:*

*:PORT

هر میزبان یا نشانی IP، ولی تطابق دقیق شماره پورت.

نمونه: *:443

*:*, *

هر میزبان یا نشانی IP و هر شماره پورتی. همچنین می‌تواند به اختصار به صورت * نوشته شود.

نمونه: *:*, *

راه‌اندازی به عنوان میزبان پرش (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:

ssh -p 2 -W example.com:80 192.0.2.37

راه‌اندازی یک سرور پروکسی socks5 روی localhost:1080. تمامی اتصالات از طریق سرور ssh بازارسال می‌شوند:

ssh -p 2 -ND 1080 192.0.2.37

شنود اتصالات ورودی روی localhost:1337 و بازارسال آن‌ها به localhost:8080 سرور ssh:

ssh -p 2 -NL 127.0.0.1:1337:127.0.0.1:8080 192.0.2.37

علاوه بر عمل به عنوان یک پروکسی شبکه، 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

این برنامه در ابتدا توسط kpcyrd نوشته شده و در حال حاضر نیز توسط او نگهداری می‌شود. گزارش‌های باگ و وصله‌ها در گیت‌هاب مورد استقبال قرار می‌گیرند:

2026-08-24