fix: scp hangs due to missing SSH options and 300s default timeout; add -o ConnectTimeout/StrictHostKeyChecking/BatchMode + 60s timeout

This commit is contained in:
2026-05-22 23:13:17 +04:00
parent 9b005095b9
commit b231892614

View File

@@ -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(