Назад | Перейти на главную страницу

rsync не использует ssh-agent?

У меня это работает на gitlab ci, и оно работает для обычного ssh (скопировано из документации gitlab 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]

Почему rsync не может использовать добавленную идентификацию, когда есть команда ssh?

Я также могу сделать это вместо этого, чтобы обойти проблему с 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 в локальной системе?

Вы можете указать протокол ssh с помощью rsync, используя параметр "-e".

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

В этом варианте также может быть указана личность.

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