LinuxForum.Fans
Тема

Синхронизация файлов + удалённое выполнение комманд

Автор: u__________12 6 сообщений 2148 просмотров
#299375

Доброго времени суток.

Есть 8 серверов на которых нужно производить синхронизацию 2-х файлов (allowlis и blacklist сквида) а потом делать на них service squid reload.

C rsync раньше как-то не доводилось работать, только начал разбираться, пришёл вот к чему

text
[etc]
path = /home/
auth users= sshuser
use chroot = yes
list = yes
secret file = /etc/rsyncd.pwd
host allow = 192.168.253.254
text
rsync -br -e='ssh -p 66' sshuser@192.168.253.254:/home/sshuser/test/ /home/sshuser/temp

и по моему я сделал чушь..

для удалённого исполнения команд был какой-то модуль, какой уже не помню..

Может кто подсказать как сделать это наиболее оптимально с возможностью несложного масштабирования (сервера будут ещё добавляться впоследствии)
В идеале один (пусть даже сложный) скрипт на центральном сервере а на остальные чтоб ничего не ставить и не настраивать

#299424

Из-за 2 файлов поднимать rsync, это как из пушки по воробьям... Проще настроить авторизацию по ключам в ssh и все делать через него.

На главном сервере сгенерировать пару ключей (закрытый/открытый)

text
ssh-keygen -t rsa -b 4096

Публичный ключ (~/.ssh/id_rsa.pub) добавить на подчиненных серверах в ~/.ssh/authorized_keys
В sshd_config на подчиненных серверах добавить:

text
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Строка PermitRootLogin yes - нужна, если вы планируете работать под учетной записью root.

После рестарта sshd на подчиненных серверах с главного сервера нужно проверить доступность входа по ключам:

text
ssh -p 22 192.168.1.2 'hostname; uname -a'

После чего можно написать небольшой скрипт для запуска с главного сервера, который подключившись по ssh к подчиненным серверам создаст файлы /etc/squid/allowlis, /etc/squid/blacklist и выполнит команду service squid reload

text

#!/bin/sh

SRVIP="192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8" SSHPORT="22"

for IP in $SRVIP; do cat /etc/squid/allowlis | ssh -p $SSHPORT $IP 'cat >/etc/squid/allowlis' cat /etc/squid/blacklist | ssh -p $SSHPORT $IP 'cat >/etc/squid/blacklist' ssh -p $SSHPORT $IP 'service squid reload' done

#299431
"pitdron" написал:
Проще настроить авторизацию по ключам в ssh и все делать через него

На момент написания вашего поста почти решил именно так и делать. Спасибо, добавили уверенности :)

#299435
"pitdron" написал:
На главном сервере сгенерировать пару ключей (закрытый/открытый)

а как и на него тоже по ключу заходить?

#299441
"Сергей В." написал:
а как и на него тоже по ключу заходить?

Если нужно то по аналогии можно настроить, а в приведенной конфигурации с него будет осуществляться вход на остальные сервера, т.е. заходить может тот у кого есть закрытый ключ, туда где его публичный ключ прописан в .ssh/authorized_keys

PS Можно почитать http://www.opennet.ru/base/sec/ssh_pubkey_auth.txt.html

Войдите или зарегистрируйтесь, чтобы ответить.