我需要使用非标准SSH端口和2FA(我通过Authy应用程序使用)将其同步到远程服务器。 SSH使用以下命令:
ssh -2 -p 9999 -i /Users/Me/.ssh/id_rsa user@9.9.9.9
这会在外壳中弹出“验证码”提示。我是从Authy输入的,现在我在。
鉴于对此a StackOverflow answers的讨论,我尝试了rsync的这种变体:
rsync -rvz -e 'ssh -p 9999 -i /Users/Me/.ssh/id_rsa \
--progress /src/ user@9.9.9.9.9:/dest/
(为了清晰起见,在此放置两行,这是我的shell命令中的一行)。
这确实会弹出我输入正确的“验证码”提示,但随后会产生此错误:
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(185) [sender=3.1.3]
如何将rsync与2FA一起使用?非常感谢。
答案 0 :(得分:0)
因为@JGK在评论中提到了答案,因此在后代中添加了答案。当远程服务器在登录时回显某些输出时(在我的情况下,.bashrc
确实如此),将显示“您的外壳是否干净”的东西。我在条件回显中添加了一个条件,仅在shell登录为“交互式”时才适用,如this Server Fault thread所述,并且它可以工作。为了更清楚起见,IF条件如下:
if echo "$-" | grep i > /dev/null; then
[any code that outputs text here]
fi
非常感谢。