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, и если у вашей цели и середины есть ваш ключ, вас не должны спрашивать.