Как вы используете идентификационный файл с rsync?
Как вы используете идентификационный файл с rsync?
это синтаксис I думаю Я должен использовать с rsync, чтобы использовать идентификационный файл для подключения:
rsync -avz -e 'ssh -p1234 -i ~/.ssh/1234-identity' "/local/dir/" remoteUser@22.33.44.55:"/remote/dir/"
но это дает мне ошибку:
Warning: Identity file ~/.ssh/1234-identity not accessible: No such file or directory.
файл в порядке, разрешения установлены правильно, он работает при выполнении ssh - просто не с rsync - по крайней мере, в моем синтаксисе. Что я делаю не так? Он пытается найти файл идентификации на удаленной машине? Если да, то как мне указать что я хочу использовать идентификационный файл на моем local машины?
6 ответов:
вы можете использовать
ssh-agent
иssh-add
для загрузки ключа в память.ssh
будет пытаться идентичности из ssh-агента автоматически, если он может найти их. Команды будутeval $(ssh-agent) # Create agent and environment variables ssh-add ~/.ssh/1234-identity
ssh-agent
- это демон пользователя, который содержит незашифрованные ключи ssh в памяти. ssh находит его на основе переменных среды, которые ssh-агент выводит при запуске. Используяeval
для оценки этого вывода создаются переменные среды.ssh-add
- это команда, которая управляет ключами памяти. Этот агент может быть заблокирован с помощью ssh-add. Время жизни по умолчанию для ключа может быть задано при запуске ssh-агента и / или задано для ключа при его добавлении.вы также можете настроить~/.файл ssh / config для предоставления определения порта и ключа. (Дополнительные параметры см. В разделе `man ssh_config.)
host 22.33.44.55 IdentityFile ~/.ssh/1234-identity Port 1234
однократное цитирование команды ssh предотвратит расширение оболочки, которое необходимо для
~
или$HOME
. Можно использовать полный или относительный путь к ключу в один двойные кавычки.
использовать
$HOME
rsync -avz -e "ssh -p1234 -i \"$HOME/.ssh/1234-identity\"" dir remoteUser@server:
или полный путь к открытому ключу:
rsync -avz -e "ssh -p1234 -i /home/username/.ssh/1234-identity" dir user@server:
протестировано с rsync 3.0.9 на Ubuntu
необходимо указать абсолютный путь к файлу ключа идентификации. Это, вероятно, какая-то причуда в rsync. (он не может быть совершенным в конце концов)
Я столкнулся с этой проблемой буквально несколько дней назад :-)
это работает для меня
rsync -avz --rsh="ssh -p1234 -i ~/.ssh/1234-identity" \ "/local/dir/" remoteUser@22.33.44.55:"/remote/dir/"