Мне нужно выполнить 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 в этой ситуации?
Спасибо, Эверетт
'-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, и если у вашей цели и у среднего есть ваш ключ, вам не должно быть предложено.