Linux: rsync – sudo и RSA ключ для авторизации

By | 07/27/2017
 

При выполнениии rsync можно указать ключ, что бы не вводить пароль.

RSA generate

Генерируем ключ:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/setevoy/.ssh/id_rsa): /home/setevoy/.ssh/WORK/JM/jm-gw-proxy
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/setevoy/.ssh/WORK/JM/jm-gw-proxy.
Your public key has been saved in /home/setevoy/.ssh/WORK/JM/jm-gw-proxy.pub.

Копируем его на сервер:

ssh-copy-id -i /home/setevoy/.ssh/WORK/JM/jm-gw-proxy -p 2201 jmadmin@jm-gw-proxy-production.domain.ms
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/setevoy/.ssh/WORK/JM/jm-gw-proxy.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
jmadmin@jm-gw-proxy-production.domain.ms's password:
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh -p '2201' 'jmadmin@jm-gw-proxy-production.domain.ms'"
and check to make sure that only the key(s) you wanted were added.

Проверяем:

ssh -i /home/setevoy/.ssh/WORK/JM/jm-gw-proxy -p 2201 jmadmin@jm-gw-proxy-production.domain.ms
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-87-generic x86_64)
...
Last login: Wed Jul 26 09:37:54 2017 from 194.105.145.45
jmadmin@lj3hwzghi6ibg000001:~$

rsync sudo

Для sudo при rsync – добавляем --rsync-path="sudo rsync"

rsync RSA

ssh -i keyname

Вариант первый – добавляем -e "ssh -i /home/jmadmin/.ssh/jm-gw-proxy":

sudo rsync -e "ssh -i /home/jmadmin/.ssh/jm-gw-proxy" -avh --rsync-path="sudo rsync" /etc/letsencrypt/{live,archive} jmadmin@10.0.0.5:/etc/letsencrypt/
sending incremental file list
sent 4.14K bytes  received 28 bytes  8.34K bytes/sec
total size is 66.04K  speedup is 15.83

.ssh/config

Другой вариант – использовать .ssh/config.

Добавляем в него запись (в .ssh/config пользователя root, т.к. rsync через sudo):

Host 10.0.0.5
    User jmadmin
    IdentityFile /home/jmadmin/.ssh/jm-gw-proxy

Проверяем:

sudo rsync -avh --rsync-path="sudo rsync" /etc/letsencrypt/{live,archive} jmadmin@10.0.0.5:/etc/letsencrypt/
sending incremental file list
sent 4.14K bytes  received 28 bytes  8.34K bytes/sec
total size is 66.04K  speedup is 15.83

Готово.

ssh-agent

Третий вариант – ssh-agent.

Запускаем его (тут опять от рута):

eval "$(ssh-agent -s)"
Agent pid 10503

Добавляем ключ:

ssh-add /home/jmadmin/.ssh/jm-gw-proxy
Identity added: /home/jmadmin/.ssh/jm-gw-proxy (/home/jmadmin/.ssh/jm-gw-proxy)

Проверяем:

rsync -avh --rsync-path="sudo rsync" /etc/letsencrypt/{live,archive} jmadmin@10.0.0.5:/etc/letsencrypt/
sending incremental file list
sent 4.14K bytes  received 28 bytes  8.34K bytes/sec
total size is 66.04K  speedup is 15.83

Готово.