Skip to content

SSH — sing-box

sing-box یک خروجی کلاینت SSH عرضه می‌کند. امکانات استاندارد SSH — احراز هویت با گذرواژه، احراز هویت با کلید با عبارت عبور، پین کردن کلید میزبان، بازنویسی بنر — همگی ارائه شده‌اند.

خروجی

type: "ssh":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
userstring(server-dependent)<username>نام ورود SSH.
passwordstring(unset)<string>احراز هویت با گذرواژه. به‌طور متقابل با احراز با کلید استفاده می‌شود — اگر هر دو تنظیم شده باشند sing-box ابتدا گذرواژه را امتحان می‌کند.
private_keybadoption.Listable[string][]<PEM block>کلید(های) خصوصی درون‌خطی. یک رشتهٔ PEM واحد یا فهرستی از رشته‌های PEM را می‌پذیرد.
private_key_pathstring(unset)<file path>مسیر یک فایل کلید خصوصی. اگر هر دو تنظیم شده باشند بر `private_key` تقدم دارد.
private_key_passphrasestring(unset)<string>عبارت عبور استفاده‌شده برای باز کردن کلیدهای خصوصی رمز شده.
host_keybadoption.Listable[string][]<key string>کلیدهای میزبان موردانتظار (قالب authorized_keys). خالی تأیید را غیرفعال می‌کند — فقط برای آزمایش مفید است.
host_key_algorithmsbadoption.Listable[string](library default)<algo>محدود کردن الگوریتم‌های کلید میزبانی که کلاینت می‌پذیرد. برای سرورهای قدیمی مفید است.
client_versionstring(library default)<SSH version string>بنر نسخهٔ کلاینت. برای تقلید از OpenSSH یا یک ساخت خاص بازنویسی کنید.

منبع: option/ssh.go:5-16 · ثابت‌شده در v1.13.11 (553cfa1)

DialerOptions و ServerOptions (server، server_port) را درون خود جای می‌دهد.

مثال‌ها

احراز هویت مبتنی بر کلید، کلید میزبان پین‌شده:

json
{
  "outbounds": [
    {
      "type": "ssh",
      "tag": "ssh-out",
      "server": "ssh.example.com",
      "server_port": 22,
      "user": "alice",
      "private_key_path": "/etc/sing-box/id_ed25519",
      "private_key_passphrase": "<passphrase>",
      "host_key": ["ssh.example.com ssh-ed25519 AAAA..."]
    }
  ]
}

احراز هویت با گذرواژه و جعل بنر:

json
{
  "outbounds": [
    {
      "type": "ssh",
      "tag": "ssh-spoof",
      "server": "ssh.example.com",
      "server_port": 22,
      "user": "alice",
      "password": "<password>",
      "client_version": "SSH-2.0-OpenSSH_9.6"
    }
  ]
}

نکات

  • خروجی SSH فقط کلاینت است — sing-box ورودی SSH-server را پیاده‌سازی نمی‌کند.
  • host_key در قالب known_hosts به سبک OpenSSH است. host_key خالی به معنای «اعتماد به هر کلید میزبان» است — برای محیط تولید امن نیست.
  • private_key یک فهرست را می‌پذیرد چون یک میزبان ممکن است کلیدها را بچرخاند؛ sing-box آنها را به ترتیب امتحان می‌کند تا یکی پذیرفته شود.

نکات بین‌هسته‌ای

  • Xray-core ‏SSH را پیاده‌سازی نمی‌کند. به SSH — Xray-core مراجعه کنید.
  • mihomo از username (نه user)، kebab-case برای بقیه (private-key-passphrase، host-key-algorithms) استفاده می‌کند و کلید خصوصی را به‌عنوان یک رشتهٔ واحد به‌جای فهرست می‌پذیرد. به SSH — mihomo مراجعه کنید.

منبع: option/ssh.go:5-16 · v1.13.11 (553cfa1)

Core Tutorial اثر Argsment