使用 rsync 和 autossh

使用 rsync 和 autossh

我正在尝试在笔记本电脑上使用 rsync 和 autossh,这样当互联网连接不太可靠时它也可以工作,但它并没有真正按照我希望的方式运行。

起点是我有一个别名,可以使用 ssh 将目录同步到远程服务器,并显示进度--info=progress2

现在我想让它在旅途中更具弹性,因为互联网连接可能会暂时不稳定。所以我尝试添加 autossh,但它在很多方面都存在问题。不过,只使用 autossh 进行正常的 ssh 连接不是问题。

我现在的别名是这样的:

alias rsync23='rsync -e '\''ssh -F /home/localuser/.ssh/config'\'' -z --info=progress2 -ru ~/path/to/local/directory/ [email protected]:/path/to/remote/directory/'

其中 .profile 包含该行export AUTOSSH_PORT=1024,而 ~/.ssh/config 包含以下行:

Host *
  ServerAliveInterval 30
  ServerAliveCountMax 10
  ExitOnForwardFailure yes

Match user remoteuser, Host *.domain.de
  ProxyCommand autossh -N -T -q -M $AUTOSSH_PORT %h %p
  ForwardAgent yes

最初的错误是(当没有-F /home/localuser/.ssh/config该项时)它会使用我的本地用户访问远程服务器,并且不会使用我为远程用户提供的 ssh 密钥,ssh(以及一般的 autossh)要求输入密码才能连接。此外,如果只是将 autossh 放入应该用于连接的 rsync 命令中,则会导致错误,看起来像是 autossh 根本没有被使用。添加后-l remoteuser -A -i ~/.ssh/id_ed25519没有奏效,仍然使用了错误的用户,因此我尝试简单地通过 .ssh/config 文件强制 ssh 使用正确的用户,但没有成功。

我还已使用 将 bash 设置为更详细的输出set -x,所使用的命令看起来正确:

+ rsync -e 'ssh -F /home/localuser/.ssh/config' -z --info=progress2 -ru /home/localuser/path/to/local/directory/ [email protected]:/path/to/remote/directory/

有谁有这方面的经验并能帮忙吗?

相关内容