Как смонтировать удаленный каталог ecryptfs?
Я использую rsync
синхронизировать данные на моем клиенте с расшифрованным ecryptfs-контейнером на сервере.
Я хочу добиться следующего автоматического процесса:
- Если на сервере
keyctl show
У меня уже есть желаемая ключевая подпись ecryptfs-add-passphrase --fnek
добавить мой ключ в связку ключей на сервереmount -i /mnt/path/to/decrypted
чтобы убедиться, что расшифрованная папка смонтирована на сервереrsync
от клиента к серверу- Необязательно: Размонтируйте папку и удалите подпись ключа (здесь не важно)
В настоящее время для шагов 1,2,3 я использую ssh -tq ...
выполнить команду и оценить результат.
Моя проблема заключается в следующем: кажется, ecryptfs требует постоянного сеанса пользователя на сервере. В противном случае ключ добавляется и мгновенно удаляется из-за выхода пользователя из системы (ssh -tq ...
заканчивается после завершения команды).
Я только что узнал, что ssh -tq 'ecryptfs-add-passphrase --fnek; mount -i /mnt/path/to/decrypted'
видимо работает как положено. После этого ключ снова сбрасывается, но монтировать удается. Это подразумевает, что я должен реализовать "динамическое приглашение" (шаг 1) на сервере. Это уже лучшее решение или я тоже могу реализовать это на клиенте?
1 ответ
Я наткнулся на ваш пост несколько раз сегодня, пытаясь понять, что именно вы описываете, но не нашел никакой помощи. Мне наконец удалось найти решение самостоятельно.
Это решение заключается в использовании преимуществ --rsync-path
опция rsync. Вот выдержка из справочной страницы:
--rsync-path=PROGRAM
Use this to specify what program is to be run on the remote
machine to start-up rsync. Often used when rsync is not in the
default remote-shell’s path (e.g. --rsync-
path=/usr/local/bin/rsync). Note that PROGRAM is run with the
help of a shell, so it can be any program, script, or command
sequence you’d care to run, so long as it does not corrupt the
standard-in & standard-out that rsync is using to communicate.
One tricky example is to set a different default directory on
the remote machine for use with the --relative option. For
instance:
rsync -avR --rsync-path="cd /a/b && rsync" hst:c/d /e/
Пример, приведенный в последнем абзаце руководства, дал мне идею использовать этот параметр для монтирования каталога ecryptfs.
И вот код:
rsync --rsync-path="(printf \"%s\" \"$passphrase\" | ecryptfs-add-passphrase --fnek && ecryptfs-mount-private) &> /dev/null && rsync" -aKLv local_to_sync remotehost.com:~/Private/