====== Используем scp в cron ======
**Задача:**
* клиент должен копировать с сервера бэкап-файл и делать это в автоматическом режиме
* сервер не должен запрашивать пароль у клиента при подключении и копировании данных
* должен быть обеспечен приемлемый уровень безопасности при передаче данных и аутентификации
**Тех. особенности**
* Используется хостинг HostGator, где SSH-демон "висит" на нестандартном порту 2222.
===== Настраиваем аутентификацию SSH без паролей =====
==== 1. На сервере ====
Выполняем команды на сервере Hostgator:
server$ mkdir ~/.ssh
server$ chmod 700 ~/.ssh
server$ touch ~/.ssh/authorized_keys2
server$ chmod 600 ~/.ssh/authorized_keys2
==== 2. На клиенте ====
Выполняем последовательность действий:
client$ mkdir ~/.ssh
client$ chmod 700 ~/.ssh
client$ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
client$ chmod go-rwx ~/.ssh/*
Будут созданы 2 файла: id_rsa и id_rsa.pub. Наша задача: перекинуть файл id_rsa на сервер. Собственно, файл id_rsa.pub содержит открытый ключ клиента.
Выполняем:
scp -P 2222 id_rsa.pub user@server_IP:/home/user/.ssh/id_rsa.pub
**где:**
* scp - утилита, выполняющая копирование файла id_rsa.pub на сервер с использованием стойкой криптографии
* 2222 - порт SSH демона на сервере (по-умолчанию, это порт 22, следовательно конструкцию "-P 2222" можно опустить в случае стандартного порта)
* user - имя пользователя на сервере
* server_IP - IP адрес сервера или же его DNS-имя
Файл id_rsa.pub будет скопирован на сервер по пути: /home/user/.ssh/
==== 3. На сервере ====
Если все правильно сделано, на сервере мы уже будем иметь файл id_rsa.pub. Осталось самое малость:
server$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2
server$ chmod 600 ~/.ssh/authorized_keys2
server$ rm ~/.ssh/id_rsa.pub
==== 4. Тест подключения на клиенте ====
Подключаемся по SSH к серверу:
client$ ssh -p 2222 user@server_IP
**где:**
* 2222 - порт SSH демона на сервере
* user - имя пользователя на сервере
* server_IP - IP адрес сервера или же его DNS-имя
Если все верно, то пароль для подключения к серверу не будет запрошен. Что нам очень требовалось.
==== 5. На клиенте: самое главное ====
Копируем все содержимое папки на удаленном сервере в папку на клиенте:
scp -P 2222 -r user@server_IP:/home/user/backup/ /backup/
**где:**
* 2222 - порт SSH демона на сервере
* user - имя пользователя на сервере
* server_IP - IP адрес сервера или же его DNS-имя
* "/home/user/backup/" - папка на удаленном сервер, содержимое которой рекурсивно (благодаря опции -r) будет скопировано в локальную папку /backup/ на клиенте
TAG: {{tag>FreeBSD}}
~~DISCUSSION~~