mirror of
https://github.com/andrey271192/domen_hydra.git
synced 2026-09-20 14:42:00 +00:00
fix: authorized_keys обновляется при каждом нажатии «⇄ Тоннель»
Раньше ключ добавлялся только при первой генерации. Если его удалили вручную — повторное нажатие ⇄ не помогало. Теперь authorized_keys синхронизируется каждый раз (dedup встроен).
This commit is contained in:
@@ -381,7 +381,7 @@ async def tunnel_cmd(name: str, x_admin_password: str = Header("")):
|
|||||||
port += 1
|
port += 1
|
||||||
rcfg["tunnel_port"] = port
|
rcfg["tunnel_port"] = port
|
||||||
|
|
||||||
# Keypair (один раз на роутер)
|
# Keypair — генерируем один раз, но authorized_keys обновляем всегда
|
||||||
if not rcfg.get("tunnel_priv_key") or not rcfg.get("tunnel_pub_key"):
|
if not rcfg.get("tunnel_priv_key") or not rcfg.get("tunnel_pub_key"):
|
||||||
try:
|
try:
|
||||||
priv, pub = await asyncio.to_thread(_gen_ed25519_keypair, name)
|
priv, pub = await asyncio.to_thread(_gen_ed25519_keypair, name)
|
||||||
@@ -391,7 +391,8 @@ async def tunnel_cmd(name: str, x_admin_password: str = Header("")):
|
|||||||
raise HTTPException(500, f"ssh-keygen упал: {e}") from e
|
raise HTTPException(500, f"ssh-keygen упал: {e}") from e
|
||||||
rcfg["tunnel_priv_key"] = priv
|
rcfg["tunnel_priv_key"] = priv
|
||||||
rcfg["tunnel_pub_key"] = pub
|
rcfg["tunnel_pub_key"] = pub
|
||||||
await asyncio.to_thread(_add_pubkey_to_authorized_keys, name, pub)
|
# Всегда синхронизируем authorized_keys (защита от ручного удаления)
|
||||||
|
await asyncio.to_thread(_add_pubkey_to_authorized_keys, name, rcfg["tunnel_pub_key"])
|
||||||
|
|
||||||
# Одноразовый токен (10 мин)
|
# Одноразовый токен (10 мин)
|
||||||
reg_token = secrets.token_urlsafe(32)
|
reg_token = secrets.token_urlsafe(32)
|
||||||
|
|||||||
Reference in New Issue
Block a user