feat: interactive SSH auth choice (key with passphrase, password via sshpass, or temp ed25519); fix missing do_transfer call for password path

This commit is contained in:
2026-05-22 23:41:09 +04:00
parent bfa3136131
commit 4d6c7ef506
2 changed files with 87 additions and 26 deletions
+3 -4
View File
@@ -378,8 +378,6 @@ def do_transfer_offer():
if key_path:
state.set_stage("TRANSFER", target_host=host, target_user=user, target_port=port_int, ssh_key=key_path)
from transfer.transfer import do_transfer
do_transfer()
else:
# Нет SSH-ключа — спрашиваем пароль и пробуем sshpass
password = prompt(f"Введите пароль для {user}@{host} (или Enter для отмены)")
@@ -392,5 +390,6 @@ def do_transfer_offer():
state.set_error("ssh_key_setup", "", "sshpass не найден и не удалось установить", suggestion="Установите sshpass: apt-get install -y sshpass")
raise RuntimeError("sshpass не найден. Установите: apt-get install -y sshpass")
state.set_stage("TRANSFER", target_host=host, target_user=user, target_port=port_int, ssh_key=None, ssh_password=password)
from transfer.transfer import do_transfer
do_transfer()
from transfer.transfer import do_transfer
do_transfer()