rsync 没有使用 ssh-agent?

rsync 没有使用 ssh-agent?

我在 gitlab ci 上运行它,它适用于常规 ssh(从 gi​​tlab ci 文档复制):

eval $(ssh-agent -s)
ssh-add <(echo "$SSH_PRIVATE_KEY")
mkdir -p ~/.ssh
echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config

这让我

Identity added: /dev/fd/63 (/dev/fd/63)

但是,当我尝试 rsync 时出现错误:

Warning: Permanently added '*****' (ECDSA) to the list of known hosts.
Permission denied, please try again.
Permission denied, please try again.
user@server: Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.3]

为什么 ssh 命令可以使用,而 rsync 不能使用添加的身份?

我也可以这样做,以解决 rsync 问题。

eval $(ssh-agent -s)
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-add

这让我

Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

哪个 rsync能够使用,很可能是因为它在假定的位置。

这是否意味着 rsync 使用它自己的 ssh 实现而不是本地系统上的 ssh-agent?

答案1

您可以使用“-e”选项通过 rsync 指定 ssh 协议。

rsync -e ssh file.tmp example.com:~/

该选项中还可以提供身份。

rsync -e "ssh -i ~/.ssh/id_rsa" file.tmp exmple.com:~/

相关内容