====== Используем 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~~