From b2318926141e66992d0b537e2595c35f239b3a63 Mon Sep 17 00:00:00 2001 From: Stitch505 <–Gleb@stitch505.su> Date: Fri, 22 May 2026 23:13:17 +0400 Subject: [PATCH] fix: scp hangs due to missing SSH options and 300s default timeout; add -o ConnectTimeout/StrictHostKeyChecking/BatchMode + 60s timeout --- transfer/transfer.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/transfer/transfer.py b/transfer/transfer.py index d016cf7..1f76cc8 100644 --- a/transfer/transfer.py +++ b/transfer/transfer.py @@ -71,14 +71,15 @@ def do_transfer(): if method == "scp": # scp использует заглавную -P для порта (строчная -p = preserve timestamps) - scp_opts = f"-P {port}" + # Добавляем SSH-опции чтобы избежать зависания и silent fail + scp_opts = f"-P {port} -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new -o BatchMode=yes" if key_path and os.path.isfile(key_path): scp_opts += f" -i '{key_path}'" info("Копируем архив через scp ...") - r = run(f"scp {scp_opts} {archive_path} {user}@{host}:{remote_path}", check=False) + r = run(f"scp {scp_opts} {archive_path} {user}@{host}:{remote_path}", check=False, timeout=60) else: info("Копируем архив через rsync ...") - r = run(f"rsync -avz --progress -e 'ssh {ssh_opts}' {archive_path} {user}@{host}:{remote_path}", check=False) + r = run(f"rsync -avz --progress -e 'ssh {ssh_opts}' {archive_path} {user}@{host}:{remote_path}", check=False, timeout=60) if r.returncode != 0: state.set_error(