Укажите идентификационный файл (id_rsa) с помощью rsync

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

Rsync не имеет проблем, если файл ключа ~/.ssh/id_rsa, но когда это что-то еще, я получаю Permission denied (publickey).

С помощью ssh я могу указать файл с идентификатором -i, но у rsync нет такой опции.

Я также попытался временно переместить ключ на локальном компьютере в ~/.ssh/id_rsa, но это также не работает.

TL; др

Можете ли вы указать файл с идентификатором rsync?

121 голос | спросил Jangari 1 Mayam14 2014, 04:15:20

4 ответа


224

Вы можете указать точную команду ssh с помощью опции -e:

rsync -Pav -e "ssh -i $HOME/.ssh/somekey" [email protected]:/from/dir/ /to/dir/

Многие пользователи ssh не знакомы с их файлом ~ /.ssh /config. Вы можете указать настройки по умолчанию для каждого хоста через файл конфигурации.

Host hostname
    User username
    IdentityFile ~/.ssh/somekey

В конечном итоге лучше всего изучить файл ~ /.ssh /config.

ответил Dan Garthwaite 1 Mayam14 2014, 04:23:22
12

Это можно сделать с помощью конфигурации пользователя SSH: http://www.cyberciti.biz/faq/create-ssh-config -file-на-Linux-Unix / в основном редактировать ~ /.ssh /config:

$ nano ~/.ssh/config
#Add Hosts below 
Host server1
HostName examplehost.com
User username
Port 22
IdentityFile /path/to/key

$ rsync -e ssh /home/user/directory [email protected]:home/user/directory/

Это должно работать для любой программы, использующей SSH, rsync,

ответил Cbaker510 1 Mayam14 2014, 04:30:36
5

FYI:

1) Открытый ключ всегда находится в домашнем каталоге пользователя, входившего на удаленный сервер, т. е. если вы входите в систему как «резервная копия», он находится в /home/backup/.ssh/authorized_keys. Идентификатор пользователя при входе в систему определяет открытый ключ, используемый в пункте назначения.

Вы можете выбрать идентификатор пользователя при соединении двумя способами:

ssh [email protected]
or
ssh -l user_id  destination_server     (<-- that is lower case "L")

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

2) Для целей резервного копирования может быть желательно создать ограниченный ключ, который ограничен для запуска только одной команды, такой как «rsync». Существует хорошее описание, связанное с резервной копией «rsnapshot», которая позволяет удаленно выполнять резервное копирование всего сервера с помощью учетной записи пользователя без привилегий и «sudo»:

«rsnapshot» howto

Rsnapshot может легко создать резервную копию пула удаленных или локальных серверов, что делает его удобным для расписания & централизованный резервный сервер.

ответил ajaaskel 6 Jpm1000000pmTue, 06 Jan 2015 22:10:58 +030015 2015, 22:10:58
4

Для меня было достаточно запустить ssh-agent следующим образом:

eval `ssh-agent -s`
ssh-add /path/to/mykey

См. также более длинный ответ здесь https: //stackoverflow .com /вопросы /17846529 /не смог-открыть-а-подключение к вашей аутентификации агент

ответил pietro 14 AMpThu, 14 Apr 2016 10:06:07 +030006Thursday 2016, 10:06:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132