yt-dlp-gui/deploy/ytgrab-egress-tunnel.service
loop-uh e1c0592b84 Туннели к ai-egress не раскручивают штраф sshd: юниты в deploy/, разнесённый старт, растущая пауза
sshd на ai-egress (OpenSSH 10, PerSourcePenalties) штрафует наш IP за
соединения, не дошедшие до аутентификации, и на время штрафа отказывает всем
SSH-соединениям с хоста. 32 туннеля пула перезапускались одновременно раз в
5 с и копили штраф сами: 27.09.2026 — 296 перезапусков в час, на узле
«drop connection … penalty: connections without attempting authentication».

- юниты пула и основного туннеля перенесены в deploy/ (были только в /etc);
- старт экземпляров пула разнесён на 0–15 с (ExecStartPre);
- пауза между перезапусками растёт 5 с → 180 с (RestartSteps/RestartMaxDelaySec);
- keepalive пула 10 с × 3 вместо 5 с × 2: короткое подвисание не рвёт туннель;
- tests/test_deploy_units.py держит эти свойства, AGENTS.md описывает механизм.
2026-09-27 15:15:57 +03:00

22 lines
1.1 KiB
Desktop File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[Unit]
Description=yt-grab egress SOCKS tunnel via ai-egress (<IP_AI_EGRESS>) for banned sites
Documentation=man:ssh(1)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
# Динамический SOCKS5 на 127.0.0.1:18099 -> выход с IP узла ai-egress.
# Только петля: наружу порт не смотрит, открытого прокси нет.
ExecStart=/usr/bin/ssh -p 10222 -i /root/.ssh/id_ed25519 -o BatchMode=yes -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/.ssh/known_hosts -o ExitOnForwardFailure=yes -o ServerAliveInterval=20 -o ServerAliveCountMax=3 -o ConnectTimeout=15 -N -D 127.0.0.1:18099 root@<IP_AI_EGRESS>
Restart=always
# Растущая пауза: быстрые повторы при сбое пути копят штраф sshd узла
# (PerSourcePenalties) и продлевают отказ всем туннелям с нашего IP.
RestartSec=5
RestartSteps=6
RestartMaxDelaySec=180
User=root
NoNewPrivileges=yes
[Install]
WantedBy=multi-user.target