1

У меня есть две машины Linux, и я пытаюсь синхронизировать файл между ними, используя 'rsync'.

Я сгенерировал ключ на клиентском компьютере, используя:

ssh-keygen -t rsa

Затем скопировал открытый ключ в файлы /home/user1/.ssh/authorized_keys и /home/user2/.ssh/authorized_keys .

Я могу rsync файл для user1 с помощью следующей команды:

rsync -a /home/user/sendIt.txt user1@some.host:/home/user1/

Однако, когда я пытаюсь использовать rsync для синхронизации файла со вторым пользователем, используя:

rsync -a /home/user/sendIt.txt user2@some.host:/home/user2/

Я получаю эту ошибку:

protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(171) [sender=3.0.6]

Почему я могу синхронизироваться с одним пользователем, а не с другим? Я должен упомянуть, что второй пользователь предназначен для использования только как пользователь SFTP, и он помещен в свою домашнюю директорию.

Любые мысли о том, как это исправить и избежать этого в будущем? Любая помощь будет оценена, спасибо.

3 ответа3

1

Вы ограничили доступ только для user2 к SFTP. Таким образом, rsync не допускается.

Чтобы решить эту проблему, вы должны отменить ограничение SFTP в sshd_config .

Вместо этого - чтобы разрешить только rsync - вы можете написать скрипт, который проверяет, является ли команда, которую нужно запустить, rsync и установить ForceCommand для этого скрипта в вашем sshd_config .

Смотрите также этот serverfault.com вопрос / ответ.

0

Задача решена.

Сначала я попробовал подход ForceCommand но у меня это не получалось . В конечном итоге я создал каталог внутри каталога user2, которого посадили в тюрьму / связали. Этот каталог принадлежит user1, и я могу rsync файлы в него.

Процесс выглядит следующим образом: user2 был заключен в тюрьму / chroot с использованием

Match Group sftponly
        ChrootDirectory /var/ftp
        ForceCommand internal-sftp
        AllowTcpForwarding no

внутри /etc/ssh/sshd_config .

Этот каталог был привязан к его домашнему каталогу с помощью:

mount --bind /var/ftp /home/user2/ftp

Затем внутри /var/ftp/ я сделал:

mkdir tempDir
chown -R user1:user1 tempDir

Как только файлы синхронизируются с этим каталогом, они автоматически появляются в каталоге пользователя user2, и он может читать их.

0

Как было сказано ранее @sborsky, вы не можете rsync потому что конфигурация вашего сервера ограничена SFTP. Однако вы должны иметь возможность использовать sshfs и монтировать удаленный каталог локально и rsync в этот подключенный каталог.

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