Мне нужно периодически создавать резервные копии каталога на удаленном сервере, который представляет собой виртуальную машину, размещенную в исследовательской организации. Они утверждают, что доступ к виртуальным машинам осуществляется через ключи ssh, и это хорошо, за исключением того, что я не могу понять, как указать rsync на ключ ssh для этого сервера.
Rsync не имеет проблем, если файл ключа есть ~/.ssh/id_rsa
, но когда это что-то еще, я получаю Permission denied (publickey)
.
С помощью ssh я могу указать файл идентификации с помощью -i
, но rsync, похоже, не имеет такой опции.
Я также попытался временно переместить ключ на локальном компьютере ~/.ssh/id_rsa
, но это также не работает.
ТЛ; др
Можете ли вы указать идентификационный файл с помощью rsync?
sudo rsync
, которое по какой-то причине не использует собственные ssh-ключи.rsync -aAP "sudo -u user ssh" user@server:dir local_dir
при синхронизации из сценариев cron, которые запускаются от имени rootОтветы:
Вы можете указать точную команду ssh с помощью опции -e:
Многие пользователи ssh незнакомы с их файлом ~ / .ssh / config. Вы можете указать настройки по умолчанию для каждого хоста через файл конфигурации.
В долгосрочной перспективе лучше всего изучить файл ~ / .ssh / config.
источник
~/.ssh/config
файл - вы открыли новую вселенную для меня!Это можно сделать с помощью пользовательской конфигурации SSH, см. Http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/, в основном, отредактируйте ~ / .ssh / config:
Это должно работать для любой программы, использующей SSH, rsync,
источник
Для меня было достаточно запустить ssh-agent следующим образом:
Смотрите также более длинный ответ здесь https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
источник
FYI:
1) Открытый ключ всегда находится в домашнем каталоге пользователя, вошедшего в систему на удаленном сервере, т.е. если вы входите в систему как «резервная копия», он находится в /home/backup/.ssh/authorized_keys. Идентификатор пользователя при входе определяет открытый ключ, используемый в месте назначения.
Вы можете выбрать идентификатор пользователя при установлении соединения двумя различными способами:
С другой стороны, с вашей стороны закрытый ключ аналогичным образом находится в homedir пользователя, если вы не переопределите его, как описано в ответе Дэна.
2) Для целей резервного копирования может быть желательно создать ограниченный ключ, который может запускать только одну команду, например «rsync». Есть хорошее описание о том, что связано с резервным копированием «rsnapshot», которое позволяет удаленно создавать резервные копии всего сервера с использованием учетной записи непривилегированного пользователя и «sudo»:
"rsnapshot" Howto
Rsnapshot может легко создавать резервные копии нескольких удаленных или локальных серверов, что делает его удобным и централизованным резервным сервером.
источник