如何与非标准端口和两因素2FA认证进行rsync?

时间:2019-02-19 04:22:49

标签: ssh rsync authy

我需要使用非标准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一起使用?非常感谢。

1 个答案:

答案 0 :(得分:0)

因为@JGK在评论中提到了答案,因此在后代中添加了答案。当远程服务器在登录时回显某些输出时(在我的情况下,.bashrc确实如此),将显示“您的外壳是否干净”的东西。我在条件回显中添加了一个条件,仅在shell登录为“交互式”时才适用,如this Server Fault thread所述,并且它可以工作。为了更清楚起见,IF条件如下:

if echo "$-" | grep i > /dev/null; then
  [any code that outputs text here]
fi

非常感谢。