ZFS отправлять / получать через SSH в Linux без разрешения root

6

Я хочу скопировать файловую систему storage/photos от source в destination без включения входа по ssh от имени root. Я пробовал несколько различных комбинаций, таких как:

sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | ssh example.com sudo zfs recieve storage/photos
sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | ssh example.com su -c zfs recieve storage/photos
sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | ssh example.com 'sudo -S zfs recieve storage/photos <~/topsecret'

Я не могу использовать sudo -S для передачи пароля, так как поток zfs уже подключен к стандартному вводу. И два приведенных выше примера, которые ожидают интерактивный терминал, а не стандартный ввод.

Возможно, глупо не хотеть включать root на сервере. Но у злоумышленника остается еще одна вещь, чтобы угадать, что приятно.

Rovanion
источник

Ответы:

4

Это не полностью удаляет root-логин, но защищает его от полнофункционального входа

Установите доверие SSH, скопировав открытый ключ локального пользователя (обычно ~/.ssh/id_rsa.pub ) в файл author_keys ( ~/.ssh/authorized_keys ) для удаленного пользователя. Это исключает запросы на ввод пароля и повышает безопасность, так как ключи SSH труднее подделать. Вы, вероятно, также хотите убедиться, что sshd_config имеет PermitRootLogin without-password - это ограничивает удаленный вход в систему только для ключей SSH (даже правильный пароль не удастся)

Затем вы можете добавить безопасность, используя ForceCommand директива в файле author_keys, разрешающая выполнение только команды zfs.

BowlesCR
источник
6

Я столкнулся с той же проблемой ранее сегодня. Я обнаружил, что вы можете разрешить обычным пользователям выполнять определенные операции с помощью команды "zfs allow":

как пользователь root выполните на сервере следующее: zfs позволяют your_username получать, создавать, монтировать хранилище / фотографии

После этого вы сможете войти на сервер, используя ваше имя_пользователя, и у вас будут права на получение zfs Посмотреть здесь: http://docs.oracle.com/cd/E19253-01/819-5461/gfkco/index.html

analog900
источник
2
На Ubuntu Xenial, после запуска sudo zfs allow myuser receive,create,mount tank/test2Я до сих пор не могу выполнить sudo zfs send -i snap1 tank/test@snap2 | zfs recv tank/test2 из-за Permission denied the ZFS utilities must be run as root. ошибка. Похоже на то ZoL по-прежнему не поддерживает zfs allow,
Jonathan Y.
4
zfs allow поддержка была только что добавлена ​​в zfsonlinux (остаются некоторые ограничения, см. сообщение о коммите)
dentarg
1

Для тех, кто еще не обновился до 0.7.0, вот решение, которое я придумал. SSH на удаленный сервер и запустите:

mkfifo zfs-pipe

# It doesn't ask for your password until the pipe starts to receive 
# data. So check back here when you start the local command
sudo zfs receive storage/photos < zfs-pipe  

Тогда локально:

sudo zfs send -R storage/photos@frequent_2015-02-12_18:15 | \
       pv | ssh example.com "cat - > zfs-pipe"

pv необязательно, конечно. Просто приятно что-то наблюдать за прогрессом

Наконец, очистить трубу:

rm zfs-pipe
dylanPowers
источник