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

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

Это синтаксис, который, я думаю, должен использовать с rsync для использования файла идентификации для подключения:

rsync -avz -e 'ssh -p1234  -i ~/.ssh/1234-identity'  \
"/local/dir/" [email protected]:"/remote/dir/"

Но это дает мне ошибку:

Warning: Identity file ~/.ssh/1234-identity not accessible: No such file or directory.

Файл в порядке, разрешения установлены правильно, он работает при выполнении ssh - просто не с rsync - по крайней мере, в моем синтаксисе. Что я делаю не так? Он пытается найти файл идентификации на удаленной машине? Если да, как я могу указать, что я хочу использовать файл идентификации на своей локальной машине?

Ответ 1

Вы можете использовать ssh-agent и ssh-add для загрузки ключа в память. ssh будет автоматически проверять идентификаторы из ssh-agent, если они могут их найти. Команды будут

eval $(ssh-agent) # Create agent and environment variables
ssh-add ~/.ssh/1234-identity

ssh-agent - это демон пользователя, который содержит незашифрованные ключи ssh в памяти. ssh находит его на основе переменных среды, которые выводит ssh-agent при запуске. Использование eval для оценки этого результата создает переменные среды. ssh-add - это команда, управляющая памятью клавиш. Агент может быть заблокирован с помощью ssh-add. Время жизни по умолчанию для ключа может быть указано при запуске ssh-agent и/или указано для ключа при его добавлении.

Вы также можете настроить файл ~/.ssh/config для определения порта и ключа. (См. `Man ssh_config для получения дополнительных параметров.)

host 22.33.44.55
    IdentityFile ~/.ssh/1234-identity
    Port 1234

Одиночное цитирование команды ssh предотвратит расширение оболочки, которое необходимо для ~ или $HOME. Вы можете использовать полный или относительный путь к ключу в одинарных кавычках.

Ответ 2

Используйте $HOME

rsync -avz -e "ssh -p1234  -i \"$HOME/.ssh/1234-identity\"" dir [email protected]:

или полный путь к ключу:

rsync -avz -e "ssh -p1234  -i /home/username/.ssh/1234-identity" dir [email protected]:

Протестировано с помощью rsync 3.0.9 на Ubuntu

Ответ 3

Вы должны указать абсолютный путь к файлу ключа идентификации. Это, вероятно, какая-то особенность в rsync. (он не может быть совершенным в конце концов)

Я столкнулся с этой проблемой всего несколько дней назад: -)

Ответ 4

Это работает для меня

rsync -avz --rsh="ssh -p1234  -i ~/.ssh/1234-identity"  \
"/local/dir/" [email protected]:"/remote/dir/"

Ответ 5

Выполняете ли вы команду в bash или sh? Это может иметь значение. Попробуйте заменить ~ на $HOME. Попробуйте выполнить двойное цитирование строки для параметра -e.

Ответ 6

используйте ключевой файл с rsync:

rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ [email protected]:/var/www/test