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 вже підключений до стандартного вводу. І два приклади вище, які очікують інтерактивний термінал, а не stdin.

Можливо, нерозумно не хочете ввімкнути вхід на корені на сервері. Але це залишає ще одну річ для зловмисника грубої сили, щоб вгадати, що приємно.

Відповіді:


4

Це не повністю видалить логін для входу до кореня, але він захищає речі поза повнофункціональним входом.

Встановіть довіру SSH, скопіювавши відкритий ключ місцевого користувача (зазвичай ~/.ssh/id_rsa.pub ) до файлу authorized_keys ( ~/.ssh/authorized_keys ) для віддаленого користувача. Це виключає підказки паролем і покращує безпеку, оскільки ключі SSH важче для bruteforce. Можливо, ви також хочете переконатися sshd_config має PermitRootLogin without-password - Це обмежує лише віддалені входи до кореневого доступу до ключів SSH (навіть правильний пароль не вдасться).

Потім можна додати безпеку за допомогою ForceCommand директива у файлі authorized_keys, щоб дозволити виконувати тільки команду zfs.


6

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

як root, виконайте наступні дії на сервері: zfs дозволяють ваше_ім'я користувача отримувати, створювати, монтувати сховище / фотографії

Після цього ви зможете отримати ssh на сервер, використовуючи ваше_ім'я користувача, і ви будете отримувати привілеї zfs. Див. Тут: http://docs.oracle.com/cd/E19253-01/819-5461/gfkco/index.html


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.