У меня есть папка на удаленном сервере, к которой я подключаюсь через SSH. Когда мне нужно синхронизировать папки, я использую доступ вручную через scp. (Я синхронизирую свою папку с папкой на сервере.)

Как я могу настроить эту работу так, чтобы она выполнялась автоматически каким-либо скриптом или около того, чтобы он автоматически синхронизировал папки и автоматически вставлял пароль?

Спасибо!

2 ответа2

0

Для возможности rsync без пароля вам потребуется создать закрытый и открытый ключи ssh. И вставьте ваш открытый ключ в файл ~/.ssh/authorized_keys на вашем удаленном сервере. http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host # you could also just login and create the authorized_keys file and paste your public key. 
ssh remote-host

Для rsync -avz --delete -e ssh ~/dir/ user@server:/home/dir

Я использую --delete, чтобы убедиться, что все всегда одинаково, но удалите, если вы не хотите этого делать. На этом этапе поместите команду rsync в скрипт bash и поместите ее в cron или выполните команду, когда захотите.

0

SSH без пароля обычно выполняется с помощью аутентификации с открытым ключом. Обычно вы шифруете закрытый ключ паролем, однако, поскольку вы хотите запустить скрипт автоматической синхронизации, я бы порекомендовал вам создать ключи как другой пользователь и запустить скрипт оболочки как этот пользователь.

На клиенте:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
# Press enter twice when asked for a passphrase

Поскольку у Mac нет SSH Copy Id, вам нужно сделать это вручную:

scp ~/.ssh/id_rsa.pub user@server.example.com:~

На сервере

mkdir ~/.ssh
chmod 700 ~/.ssh
# Append or copy public key to authorized keys file:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

Сценарий оболочки - это текстовый файл с исполняемым набором разрешений, который начинается с

#!/bin/sh
# you can then do any commands that you do manually, ex:
# (See levy's answer for the rsync command to use)
rsync /home/Anders/ 192.168.3.5:~/backup/location

Для периодического выполнения скрипта вы можете использовать cron. Скажем, мы сохранили этот скрипт в /home/Anders/bin/sync.sh. Затем вы запускаете:

env EDITOR=nano crontab -e

как пользователь, которого вы хотите запустить как скрипт cron.

В появившемся текстовом редакторе вы должны ввести:

#Minute Hour  Day Month Year  Command  
0        13   *   *     *     /home/Anders/bin/sync.sh

Вышеуказанное будет синхронизироваться каждый день на 0-й минуте 14-го часа (начинается отсчет с нуля), подстраиваясь под ваши нужды.

Другим вариантом может быть SSHFS. То есть вы можете подключить его и работать с ним как с обычным каталогом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .