Files
local_machine/docs/connectivity/PROXY_EMERGENCY.md

9.0 KiB
Raw Blame History

Экстренное восстановление: прокси ru.hunab.app и SSH

Одна страница на случай, когда «всё слетело». Полная схема, безопасность и нюансы ~/.ssh/config: PROXY_GUIDE.md.

Сеть / хотспот (интернет есть только после перезагрузки): чаще всего Manual IPv4 на WiFi (Joplin) при смене подсети Android + битые маршруты; также PAC 1089 / SOCKS 1080 без клиента. Пошагово: HOTSPOT_NETWORK_EMERGENCY.md.


Константы (запомнить / вставить в заметки)

Что Значение
RU-прокси (SSH) 149.154.64.19, пользователь ahau, порт 22
Домен прокси ru.hunab.app
Прод (DO) 209.38.32.21, SSH 2222, пользователь hunab (или root)
Прод (веб) hunab.app

Ключи (типично):

  • RU (ahau): ~/.ssh/id_ed25519
  • RU root: ~/.ssh/hsites_new_deploy_key → хост hsites-new
  • Прод: ~/.ssh/hunab_deploy_key

Порядок проверки (2 минуты)

  1. Интернет и DNS: открыть в браузере https://ru.hunab.app/proxy-health и https://ru.hunab.app/api/health.
  2. RU SSH: ssh -o ConnectTimeout=10 hsites-ahau "echo RU_OK"
    Без алиаса: ssh -o ConnectTimeout=10 -i ~/.ssh/id_ed25519 ahau@149.154.64.19 "echo RU_OK"
  3. Прод через RU: ssh -o ConnectTimeout=15 hunab-prod "echo PROD_OK"
  4. Прод напрямую (если RU мёртв): ssh -o ConnectTimeout=15 hunab-prod-direct "echo PROD_DIRECT_OK"

Если шаг 2 падает — цепочка через прокси недоступна; используйте прямой доступ к DO (шаг 4) и SOCKS «через DO» (ниже).


Минимальные блоки ~/.ssh/config (восстановить вручную)

Важно: hunab-prod и hunab-prod-rootразные блоки Host (разный User). Не объединять в одну строку Host.

Host hsites-ahau
    HostName 149.154.64.19
    User ahau
    IdentityFile ~/.ssh/id_ed25519
    StrictHostKeyChecking accept-new
    ServerAliveInterval 30
    ServerAliveCountMax 8

Host hunab-prod hunab-prod-via-ahau
    HostName 209.38.32.21
    User hunab
    Port 2222
    IdentityFile ~/.ssh/hunab_deploy_key
    ProxyJump hsites-ahau
    StrictHostKeyChecking accept-new
    IdentitiesOnly yes
    ServerAliveInterval 30
    ServerAliveCountMax 8

Host hunab-prod-direct
    HostName 209.38.32.21
    User hunab
    Port 2222
    IdentityFile ~/.ssh/hunab_deploy_key
    StrictHostKeyChecking accept-new
    IdentitiesOnly yes
    ServerAliveInterval 30
    ServerAliveCountMax 8

При необходимости root на проде — отдельный блок Host hunab-prod-root / hunab-prod-root-direct с User root (см. PROXY_GUIDE.md).

Зависший master-сокет:
ssh -O exit hunab-prod 2>/dev/null; ssh -O exit hunab-prod-direct 2>/dev/null; rm -f ~/.ssh/cm-hunab-*


SOCKS для Telegram (порт 1081)

Только RU (если достаточно выхода с 149.154.64.19):

ssh -D 1081 -N ahau@149.154.64.19

RU → прод → интернет (когда с RU до Telegram не проходит):

ssh -D 1081 -N -J hsites-ahau -i ~/.ssh/hunab_deploy_key -p 2222 hunab@209.38.32.21

Без RU, только DO:

ssh -D 1081 -N -i ~/.ssh/hunab_deploy_key -p 2222 hunab@209.38.32.21

Проверка (второй терминал):

curl -x socks5h://127.0.0.1:1081 -sI https://api.telegram.org | head -3

В Telegram: SOCKS5, 127.0.0.1, 1081.
Скрипты и launchd: launchd/README.md, scripts/telegram-socks-tunnel.sh.


scp на прод через RU (если нужен файл «прямо сейчас»)

PROXY_CMD="ssh -i $HOME/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new -W %h:%p hsites-ahau"
scp -i ~/.ssh/hunab_deploy_key -o ProxyCommand="$PROXY_CMD" -o ServerAliveInterval=15 \
  /path/to/file hunab@209.38.32.21:/home/hunab/

Cursor / PING timeout из РФ

SOCKS для IDE: docs/cursor/README.md, порт 10809. Скрипт docs/cursor/scripts/cursor-socks-tunnel.sh при CURSOR_SOCKS_VIA_DO=1 — только Mac→RU→DO (telegram-socks-via-do); CURSOR_SOCKS_VIA_DO=0 — выход с RU. Не путать с 1081 (Telegram).


Скрипт выбора маршрута к проду

Из репозитория: scripts/ssh-hunab-prod.sh

  • HUNAB_PROD_FORCE_VIA=1 — сразу через RU
  • HUNAB_PROD_FORCE_DIRECT=1 — только прямой DO

Краткая версия от PROXY_GUIDE; при расхождении правьте сначала основной гайд.


Как сейчас на этой машине (проверено: 2026-04-07)

Среда: macOS, пользователь eternal, имя хоста Eternals.local.

~/.ssh/config

  • В начале файла: Include ~/.colima/ssh_config (Colima).
  • RU → прод (основной путь): hunab-prod и hunab-prod-via-ahau209.38.32.21:2222, пользователь hunab, ключ ~/.ssh/hunab_deploy_key, ProxyJump hsites-ahau, плюс ControlMaster / ControlPath ~/.ssh/cm-hunab-prod-%C, ControlPersist 30m, keepalive, UseKeychain.
  • Прод без RU: hunab-prod-direct, root-вариант hunab-prod-root-direct — те же порт/ключ, без ProxyJump, свой ControlPath (cm-hunab-direct-* / cm-hunab-direct-root-*).
  • Root через RU: hunab-prod-root, hunab-prod-root-via-ahau — как hunab-prod, но User root и cm-hunab-prod-root-%C.
  • RU SSH (ahau): hsites-ahau149.154.64.19, ~/.ssh/id_ed25519, keepalive, UseKeychain / AddKeysToAgent.
  • RU SSH (root): hsites-new → тот же IP, ~/.ssh/hsites_new_deploy_key.
  • Альтернатива через root на RU: prod-ru, hunab-prod-via-ruProxyJump hsites-new (не hsites-ahau). В конфиге блок Host prod-ru продублирован дважды — лишнее можно схлопнуть при правке.
  • Туннель через локальный SOCKS 1090: prod-tunnelProxyCommand nc -X 5 -x 127.0.0.1:1090 %h %p.
  • SOCKS для Telegram: только telegram-socks-via-do (Mac→RU→DO). telegram-socks-direct-do — опционально для ручного SSH к DO без RU, не для автозамены SOCKS.
  • Дополнительно в файле: старые хосты hsites / hsites.hunab, ahau@ru.hunab, боты hunab-bot / hunab.bots, алиас tunnel на 149.154.64.19.

Ключи на диске (есть): ~/.ssh/id_ed25519, ~/.ssh/hunab_deploy_key, ~/.ssh/hsites_new_deploy_key.

Автозапуск SOCKS 1081 (Telegram)

  • LaunchAgent: ~/Library/LaunchAgents/com.hunab.telegram-socks-via-do.plistRunAtLoad, KeepAlive, лог /tmp/telegram-socks-tunnel-via-do.log.
  • Скрипт: ~/Library/Application Support/hunab/telegram-socks-launch.sh — всегда ssh -D 1081 -N telegram-socks-via-do (Mac→RU→DO).
  • Состояние на момент проверки: задание в launchctl в статусе running; при обрыве цепочки SSH в логе сыплются ошибки до следующего успешного подключения (смотреть хвост лога).

Ручной запуск из репозитория

  • Скрипт: docs/connectivity/scripts/telegram-socks-tunnel.sh — порт 1081; без TELEGRAM_SOCKS_VIA_DO — только RU; с TELEGRAM_SOCKS_VIA_DO=1 — только Mac→RU→DO (telegram-socks-via-do), как LaunchAgent.

Прочее на машине

  • В launchctl также видны Shadowsocks (com.shadowsocks.local, com.qiuyuzhou.shadowsocksX-NG.local) — к hunab-прокси не относятся, но могут влиять на маршрутизацию, если включены.

Порт 1081 и SSH в момент автоматической проверки из среды агента могли быть пустыми или с ошибками сети; ориентируйтесь на lsof -i :1081 и лог выше.