Используйте pssh с аутентификацией по ключу хоста ssh, лучше
сначала, на локальном компьютере, как пользователь для подключения, выполните ssh-keygen для создания открытого ключа
затем используйте ssh-copy-id для копирования этот открытый ключ ко всем удаленным серверам. затем выполните что-нибудь вроде:
pssh -h <(consul members | grep awk {'print $2'} | cut -d ":" -f1) -o /tmp/update-consul-servers -i "yum clean all && yum -y update consul && systemctl restart consul.service"
Я только что столкнулся с этой самой проблемой на устройстве QNAP с этой ошибкой;
ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(2547) [Receiver=3.0.7]
Я решил ее странным способом, отредактировав файл rsync.conf на
use chroot = true
После завершения начальной синхронизации я снова установил его на
use chroot = false
И теперь это работает.
Это может быть проблема SELinux, ему необходимо знать, что папка может использоваться демоном rsync. Рассмотрим пример для rsync следующей папки:/home/myuser/ftp
Для установки правильного контекста SELinux необходимо выполнить следующие команды:
semanage fcontext -a -t rsync_data_t '/home/myuser(/.*)?'
restorecon -Rv '/home/myuser'
setsebool -P rsync_client on
Как ни странно, я заметил, что родительская папка должна быть помечена, поэтому маркировка делается на /home/myuser
вместо /home/myuser/ftp
. Ограничение до подпапки ftp
просто делается в конфигурации демона rsync.
Вы можете проверить маркировку SELinux, запустив:
ls -Z /home/myuser
Интересная статья о том, почему объединение chroot и SELinux — хорошая идея:http://blog.siphos.be/2012/04/why-both-chroot-and-selinux/