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

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/"

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

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

rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ ubuntu@231.210.24.48:/var/www/test