0

我需要使用我通过 Authy 应用程序使用的非标准 SSH 端口和 2FA 同步到远程服务器。SSH 使用以下命令:

ssh -2 -p 9999 -i /Users/Me/.ssh/id_rsa  user@9.9.9.9 

这会在 shell 中显示“验证码”提示。我从 Authy 进入,我在里面。

鉴于对此StackOverflow 答案的讨论,我尝试了 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]

如何在 2FA 中使用 rsync?非常感谢。

4

1 回答 1

0

因为@JGK 在评论中提到了答案,所以在这里添加答案以供后人参考。当远程服务器在登录时回显一些输出时,会显示“你的 shell 干净”的东西,在我的情况下.bashrc确实如此。我已经为该回显添加了一个条件,仅在 shell 登录为“交互式”时应用,如本服务器故障线程中所述,它可以工作。为更清楚起见,IF 条件如下所示:

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

非常感谢。

于 2019-02-19T19:02:11.103 回答