rsync через несколько соединений ssh ​​с ключом

Мне нужно выполнить rsync с целевого сервера с сервером посередине, и у меня есть один и тот же открытый ключ как на целевом, так и на среднем сервере. Я хочу использовать этот ключ, поэтому мне не нужно выполнять аутентификацию по паролю.

local --ssh--> middle --ssh--> target

При чтении метода 1 из использования rsync через брандмауэр кажется, что это выполнимо, но я пока не смог выяснить часть синтаксиса команды ssh.

Когда я пытаюсь

ssh -i $KEY -A user@middle ssh user@target

я получил

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).

Очевидно, что переадресация агента происходит не так, как я ожидал.

В идеале я хотел бы объединить все это в одну команду без необходимости помещать что-либо в файлы ~/.ssh/config. Каковы все шаги, чтобы сделать rsync в этой ситуации?

Спасибо эверетт

2 ответа

'-A' будет только "переносить" удостоверения, загруженные в ssh-agent. ("-i" в команде будет недостаточно.)

Как насчет этого что-то вроде этого;

ssh-agent sh -c "ssh-add test_ident; rsync -avr --rsh='ssh -TA hostA ssh -TA ' foo/ hostB:/var/tmp/foo/"

Лично я делаю это в два прыжка со следующим скриптом:

#!/bin/bash
ssh -fN root@middle.foo -L2211:target.foo:22
rsync "-e ssh -p 2211" /Users/me/dir1/ root@localhost:/backup/dir1/ -avz --progress --delete-after
rsync "-e ssh -p 2211" /Users/me/dir2/ root@localhost:/backup/dir2/ -avz --progress --delete-after

мод по мере необходимости.

Казалось бы, это проще, чем играть с опциями rsync, и если у вашей цели и середины есть ваш ключ, вас не должны спрашивать.

Другие вопросы по тегам