Използването Rsync и SSH
Original on http://troy.jdmz.net/rsync/index.html
Keys, утвърждаване и Автоматизация
Този документ обхваща използване на Cron, SSH, и Rsync за архивиране на файлове в локална мрежа или Интернет. Част от моята цел е да се гарантира, не се изисква намесата на потребителя, когато компютърът се рестартира (пароли, ключове или ключовите мениджъри).
Обичам понякога да направите резервно копие на някои сеч, поща, и информация за конфигурацията на домакините през мрежата и Интернет, и тук аз не съм намерил начин да го направя. Ще имате нужда от тези пакети, които са инсталирани:
- Rsync
- OpenSSH
- Cron (или vixie-Cron)
Моля, имайте предвид, че тези инструкции могат да бъдат специфични версии на Red Hat Linux 7.3, 9, и Fedora Core 3, но се надявам, те не ще бъде твърде трудно да се адаптират към почти всеки * никс тип OS. Човекът страници за “SSH” и “Rsync” трябва да Ви бъдем полезни, ако ви се наложи да промените някои неща (използвайте “SSH човек” и “човек Rsync” команди).
Първо, ще дефинираме някои променливи. В моето обяснение, аз ще се синхронизиране на файлове (копиране само нови или променени файлове) по един начин, и аз ще бъда в началото на този процес от страната-домакин, искам да копирате неща. С други думи, аз ще се синхронизиране на файлове от / дистанционно / директория / на remotehost, като
remoteuser / / директория / на thishost, като thisuser.
Искам да се уверете, че “Rsync” над “SSH” работи на всички, преди да започна за автоматизиране на процеса, така че аз го тества за първи път като thisuser:
и въведете remoteuser @ remotehost парола, когато бъдете подканени. Аз трябва да уверете се, че remoteuser има права за четене / дистанционно / директория / на remotehost, и че
thisuser има права за писане / това / / реж. на thishost. Също така, “Rsync” и “SSH” трябва да бъде в thisuser “път (използване” SSH “и” който Rsync “),” Rsync “трябва да бъде в
remoteuser “път, и” SSHD “трябва да се работи на
remotehost.
Конфигуриране thishost
Ако това всички работи, или аз в крайна сметка тя работи, аз съм готов за следващата стъпка. Аз трябва да генерира частен / публичен чифт ключове, за да позволи “SSH връзка без да пита за парола. Това може да звучи опасно, и то е, но е по-добре, отколкото съхраняване на потребителска парола (или ключ парола), тъй като на ясен
текст в сценария[0]. Също така мога да поставя ограничения върху това, където връзките, направени с този ключ, може да дойде, и какво могат да направят, когато е свързан. Както и да е, аз генерират ключ, аз ще се използва за thishost (като thisuser):
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):[press enter here]Enter same passphrase again:[press enter here]Your identification has been saved in /home/thisuser/cron/thishost-rsync-key.
Your public key has been saved in /home/thisuser/cron/thishost-rsync-key.pub.
The key fingerprint is:
2e:28:d9:ec:85:21:e7:ff:73:df:2e:07:78:f0:d0:a0 thisuser@thishost
и сега имаме ключ, без парола в двата файла, споменати по-
горе[1]. Уверете се, че няма други неупълномощени потребители могат да четат частен ключ файл (без разширение “. Кръчма”).
Този ключ е безпредметно, докато ние поставяме публичната част в “authorized_keys
файла[2] на remotehost, и по-специално за remoteuser:
Аз използвам SCP, за да получите файла на remotehost:
и тогава мога да подготвя нещата за remotehost.
Конфигуриране remotehost
“SSH” над към remotehost:
remoteuser@remotehost’s password:[type correct password here]
$ echo I am now $USER at $HOSTNAME
I am now remoteuser at remotehost
да се направят някои работи.
Аз трябва да се уверете, че имам директория и файлове, които трябва да разрешат връзки с този
ключ[3]:
$ mv thishost-rsync-key.pub.ssh/
$ cd.ssh/
$ if[! -f authorized_keys]; then touch authorized_keys ; chmod 600 authorized_keys ; fi
$ cat thishost-rsync-key.pub >> authorized_keys
Сега ключът може да се използва за направата на връзки към този хост, но тези връзки могат да бъдат от всяка точка, (че SSH демона на
remotehost позволява връзки от) и те могат да направят нищо (че
remoteuser да направите), и аз не искам, че. Аз редактирате файла “authorized_keys” (VI) и да променят линията с информация “thishost Rsync-key.pub” върху него. Аз само ще се добавят няколко неща в предната част на това, което вече е там, промяна на линията от
това:
A+2qx9JNorgdrWKhHSKHokFFlWRj+qk3q+lGHS+hsXuvta44W0yD0y0sW62wrEVegz+JVmntxeYc0nDz
5tVGfZe6ydlgomzj1bhfdpYe+BAwop8L+EMqKLS4iSacNjoPlHsmqHMnbibn3tBqJEq2QJjEPaiYj1iP
5IaCuYBhuTKQGa+oyH3mXEif5CKdsIKBj46B0tCy0/GC7oWcUN92QdLrUyTeRJZsTWsxKpRbMliD2pBh
4oyX/aXEf8+HZBrO5vQjDBCfTFQA+35Xrd3eTVEjkGkncI0SAeUAAAAVAMZSASmQ9Pi38mdm6oiVXD55
Kk2rAAABAE/bA402VuCsOLg9YS0NKxugT+o4UuIjyl6b2/cMmBVWO39lWAjcsKK/zEdJbrOdt/sKsxIK
1/ZIvtl92DLlMhci5c4tBjCODey4yjLhApjWgvX9D5OPp89qhah4zu509uNX7uH58Zw/+m6ZOLHN28mV
5KLUl7FTL2KZ583KrcWkUA0Id4ptUa9CAkcqn/gWkHMptgVwaZKlqZ+QtEa0V2IwUDWS097p3SlLvozw
46+ucWxwTJttCHLzUmNN7w1cIv0w/OHh5IGh+wWjV9pbO0VT3/r2jxkzqksKOYAb5CYzSNRyEwp+NIKr
Y+aJz7myu4Unn9de4cYsuXoAB6FQ5I8AAAEBAJSmDndXJCm7G66qdu3ElsLT0Jlz/es9F27r+xrg5pZ5
GjfBCRvHNo2DF4YW9MKdUQiv+ILMY8OISduTeu32nyA7dwx7z5M8b+DtasRAa1U03EfpvRQps6ovu79m
bt1OE8LS9ql8trx8qyIpYmJxmzIdBQ+kzkY+9ZlaXsaU0Ssuda7xPrX4405CbnKcpvM6q6okMP86Ejjn
75Cfzhv65hJkCjbiF7FZxosCRIuYbhEEKu2Z9Dgh+ZbsZ+9FETZVzKBs4fySA6dIw6zmGINd+KY6umMW
yJNej2Sia70fu3XLHj2yBgN5cy8arlZ80q1Mcy763RjYGkR/FkLJ611HWIA= thisuser@thishost
за това[4]:
C1kc3MAAAEBAKYJenaYvMG3nHwWxKwlWLjHb77CT2hXwmC8Ap+fG8wjlaY/9t4uA+2qx9JNorgdrWKhH
SKHokFFlWRj+qk3q+lGHS+hsXuvta44W0yD0y0sW62wrEVegz+JVmntxeYc0nDz5tVGfZe6ydlgomzj1
bhfdpYe+BAwop8L+EMqKLS4iSacNjoPlHsmqHMnbibn3tBqJEq2QJjEPaiYj1iP5IaCuYBhuTKQGa+oy
H3mXEif5CKdsIKBj46B0tCy0/GC7oWcUN92QdLrUyTeRJZsTWsxKpRbMliD2pBh4oyX/aXEf8+HZBrO5
vQjDBCfTFQA+35Xrd3eTVEjkGkncI0SAeUAAAAVAMZSASmQ9Pi38mdm6oiVXD55Kk2rAAABAE/bA402V
uCsOLg9YS0NKxugT+o4UuIjyl6b2/cMmBVWO39lWAjcsKK/zEdJbrOdt/sKsxIK1/ZIvtl92DLlMhci5
c4tBjCODey4yjLhApjWgvX9D5OPp89qhah4zu509uNX7uH58Zw/+m6ZOLHN28mV5KLUl7FTL2KZ583Kr
cWkUA0Id4ptUa9CAkcqn/gWkHMptgVwaZKlqZ+QtEa0V2IwUDWS097p3SlLvozw46+ucWxwTJttCHLzU
mNN7w1cIv0w/OHh5IGh+wWjV9pbO0VT3/r2jxkzqksKOYAb5CYzSNRyEwp+NIKrY+aJz7myu4Unn9de4
cYsuXoAB6FQ5I8AAAEBAJSmDndXJCm7G66qdu3ElsLT0Jlz/es9F27r+xrg5pZ5GjfBCRvHNo2DF4YW9
MKdUQiv+ILMY8OISduTeu32nyA7dwx7z5M8b+DtasRAa1U03EfpvRQps6ovu79mbt1OE8LS9ql8trx8q
yIpYmJxmzIdBQ+kzkY+9ZlaXsaU0Ssuda7xPrX4405CbnKcpvM6q6okMP86Ejjn75Cfzhv65hJkCjbiF
7FZxosCRIuYbhEEKu2Z9Dgh+ZbsZ+9FETZVzKBs4fySA6dIw6zmGINd+KY6umMWyJNej2Sia70fu3XLH
j2yBgN5cy8arlZ80q1Mcy763RjYGkR/FkLJ611HWIA= thisuser@thishost
където “10.1.1.1″ е IP (версия 4[5]) адрес на thishost “/ Начало / remoteuser / Cron / валидира Rsync” (която е само една от няколко възможности[6], включително и персонализиране[7]за повишаване на сигурността) е скрипт, който изглежда нещо като това:
case “$SSH_ORIGINAL_COMMAND” in
*\&*)
echo “Rejected”
;;
*\(*)
echo “Rejected”
;;
*\{*)
echo “Rejected”
;;
*\;*)
echo “Rejected”
;;
*\<*)
echo “Rejected”
;;
*\`*)
echo “Rejected”
;;
*\|*)
echo “Rejected”
;;
rsync\ –server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo “Rejected”
;;
esac
Ако thishost има променлива за адрес, или акции адрес (чрез NAT или нещо подобно) с домакините, нямате доверие, да пропусне “=” 10.1.1.1 “,” част на линията (включително запетая), но оставете “команда” част. По този начин, само “Rsync” ще бъде възможно от връзките, които използват този ключ. Уверете се, че “валидира Rsync” скрипт да е изпълним от remoteuser на remotehost и го тестваме.
че remoteuser има достъп до. Това е опасно, и аз трябва да вземат всички необходими предпазни мерки, които считат за необходими за поддържане на сигурността и тайната на този ключ. Някои възможности ще бъде гарантирането на правилното файла разрешения са назначени, да обмисли възможността за използване ключова демон кеширане и ако наистина имам нужда този процес автоматизирани стихове риск.
Друг детайл сигурност е да се помисли SSH демон конфигурация на
remotehost. Този пример се фокусира върху потребител (remoteuser), който не е корен. Аз не препоръчваме да използвате корен като отдалечения потребител, защото корен има достъп до всеки файл на remotehost. Тази способност сам по себе си е много опасно, и наказанията за грешка или неправилна конфигурация може да бъде далеч по-стръмен, отколкото тези за “нормални” потребител. Ако не използвате корен като отдалечени потребител (някога) и да направите решения за сигурност за remotehost, аз препоръчвам:
или:
бъдат включени в “/ и т.н. / SSH / sshd_config” файл на remotehost. Това са глобални настройки, не само свързани с тази връзка, така че бъдете сигурни, че не се нуждаят от възможност за тези опции за конфигуриране забраняват[8].
AllowUsers “,” AllowGroups “,” DenyUsers “, както и ключови думи” DenyGroups “могат да бъдат използвани за ограничаване на SSH достъп до определени потребители и групи. Те са документирани в човека страница за “sshd_config”, но аз ще спомена, че всички те могат да използват “*” и “?” като заместващи символи, за да се даде възможност и да откаже достъп на потребители и групи, които съответстват на модели. “AllowUsers” и “DenyUsers” може също така да ограничи домакин, когато моделът е в USER @ HOST форма.
Отстраняване на неизправности
Сега, че имам ключ, без парола в място и конфигурирани, аз трябва да го тествам преди да я сложите в Cron работа (която има свой собствен малък набор от багажа). Да излезете от сесията на SSH, за да remotehost
и се опитват[ 9]:
Ако това не работи, аз ще се “команда” ограничение върху ключа и опитайте отново. Ако го пита за парола, аз ще провери разрешенията на файла с личен ключ (на thishost, следва да е 600), на “authorized_keys” и (по remotehost, следва да е 600), на “~ /. SSH / директория (и на двата хоста, трябва да се 700) и на домашна директория (‘~/’) себе си (и на двата хоста, не трябва да се записваеми от всеки, но на потребителя). Ако някои загадъчен “Rsync” протокол грешка, която се споменава “валидира-Rsync скрипт, аз ще се уверете, че разрешенията за” Потвърди-Rsync” (на remotehost, може да бъде 755, ако всеки remotehost потребител е надежден) позволяват remoteuser да четат и изпълняват нея.
Ако нещата все още не работят, някои полезна информация може да се намери в лог файлове. Лог файлове, които обикновено се намират в / Var /
Дневник / директория на повечето Linux домакините и в / Var / Дневник
/ сигурен лог файла на Red Hat-Иш домакините Linux. Най-полезният лог файловете в този случай ще бъдат намерени на
remotehost, но Localhost, могат да дадат някакво информация за страна на клиента
в своите дневници[10]. Ако не можете да стигнете до трупите, или са само търпение, можете да кажете изпълним “SSH”, за да се дадат някои сеч с командите на “многословно”: “V”, “ВВ”, “ВВВ “. В по-многословно продукция. Един от тях е в командата по-горе, но този по-долу трябва да предостави много по-
висока мощност:
Надяваме се, че той винаги ще работи само безупречно, така никога не съм трябва да се разшири информация за отстраняване на неизправности,
изброени тук[11].
Настройка Cron Job
Последната стъпка е Cron скрипт. Аз използвам нещо подобно:
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/home/thisuser/cron/thishost-rsync-key
RUSER=remoteuser
RHOST=remotehost
RPATH=/remote/dir
LPATH=/this/dir/
$RSYNC -az -e “$SSH -i $KEY” $RUSER@$RHOST:$RPATH $LPATH
защото е лесно да се модифицира на бита и парчета от командния ред за различни хостове и пътеки. Аз обикновено го наричат нещо като “Rsync-remotehost архивиране”, ако той съдържа бекъп. Аз изпитвам сценария, само в случай, че внимателно добавя грешка някъде.
Когато получа скрипта работи успешно, аз използвам “кронтаб-е”, за да вмъкнете ред за тази нова работа Cron:
за ежедневно 5 часа сутринта синхронизация, или:
за седмично (5 часа сутринта в петък). Месечни и годишни от тях са редки за мен, така че гледам за “човек кронтаб”
или
тук за съвети за тези.
Добре! Освен за ежедневието “крак с лепенки” нещо, коварното “скрити недостатъци конфигурация” част и незабравим “пълен отказ на човешката логика”, набор от проблеми, моята работа тук е свършена. Наслаждавайте се!
SSH-агент
или
ключодържател, е, че автоматизиран процес ще оцелее след рестартиране на приемащата машина и изпълнение на следващото планирано време, без каквато и да е намеса от моя страна (не всички машини, така автоматизирани винаги са достъпни). Ако не разполагате с тези изисквания, тези други опции, може да дава назаем изпълнение повече сигурност.
отбелязано тук – благодаря
ти @ avenjamin). SSH2 връзки са по-сигурни от SSH1 връзки, но ще трябва да търсят другаде за подробности относно това (“мъж SSH-Keygen” и
Google). Също така, на ключови места може да бъде направено с командата (SSH-Keygen-б 2048-е keyfile-т RSA-N “) за автоматизиране на” ключова част парола “, или (SSH-Keygen-б 2048-е keyfile -р-т RSA-N “), за да се елиминират всички изход от командата.
хайвера обикновено.
http://www.inwap.com/mybin/miscunix/?rrsync, макар че той е по-сложно. Версия на този скрипт на Perl е пакет с Rsync източник тук
:
http://www.samba.org/ftp/unpacked/rsync/support/rrsync (с подобрения).
http://mike-hostetler.com/blog/2007/12/rsync-non-standard-ssh-port
).Syslog съоръжение.
Предоставя се разрешение за копиране, разпространение и / или модификация на този документ при условията Лиценза за свободна документация на GNU, версия 1.2 или някоя следваща версия, издадена от Фондацията за свободен софтуер; без непроменими раздели, без текст на предната подвързия и без задна покритие на текстове. Копие на лиценза трябва да бъде на
разположение тук
и
тук
. текущото копие на този документ трябва да бъде
на разположение
тук.
