Инструменты пользователя

Инструменты сайта


doc:os:freebsd:utilities:use_scp_in_cron

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

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
/var/www/wiki.itcall.ru/data/pages/doc/os/freebsd/utilities/use_scp_in_cron.txt · Последнее изменение: d.m.Y H:i — 127.0.0.1