Как вы используете файл идентификатора с 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