공개 키 인증을 통해 서버에 로그인한 다음 컨테이너를 설치합니다(예: LUKS/dm-crypt 또는 truecrypt 사용). 현재는 컨테이너 비밀번호를 수동으로 입력해야 합니다. SSH 에이전트를 사용하여 이 컨테이너를 보호하는 방법이 있습니까? 또는 이것이 직접 가능하지 않은 경우 SSH 공개 키(또는 더 나은 키 파일)를 사용하여 컨테이너 비밀번호를 암호화하고 SSH 에이전트를 사용하여 임시로 해독할 수 있습니까?
답변1
한번은 로컬 PC의 백업을 저장한 원격 encf를 사용하여 비슷한 작업을 수행한 적이 있습니다. 어쩌면 이것이 도움이 될 것입니다. 당시 저는 gnome-keyring과 함께 Ubuntu를 사용하고 있었습니다.
dbus_session.sh
#!/bin/bash
# This will grab the appropriate environment variables to connect to the
# gnome-keyring via dbus for the currently logged in user
# shouldn't be necessary if you're running from an xterm in gnome
$(sed 's/^\([^#]\)/export \1/' ~/.dbus/session-bus/*-0 | grep -v ^#)
keyring_helper.py
#!/usr/bin/python
import sys
import keyring
if len(sys.argv) < 5:
print "Usage: keyring_helper.py get|set name server protocol [password]"
sys.exit(1)
k = keyring.Keyring(sys.argv[2], sys.argv[3], sys.argv[4])
if sys.argv[1] == "get":
c = k.get_credentials()
print c[1]
elif sys.argv[1] == "set":
k.set_credentials((sys.argv[2], sys.argv[5]));
백업 파일
#!/bin/bash
. "$(dirname "$0")"/dbus_session.sh
cd /home/mike/misc/scripts
if ssh polaris mountpoint -q ~/mnt/; then
echo 1>&2 Filesystem already mounted.
exit 1
fi
# Take password from gnome-keyring and store in FIFO on polaris
./keyring_helper.py get mike polaris enc_backups 2>/dev/null |ssh polaris 'cat >~/passwd' &
# Mount the encrypted filesystem
ssh polaris 'nice -n 19 encfs -f -i 5 --extpass=cat ~/enc_backups/ ~/mnt/ <~/passwd' &
# Wait for the mount to complete
ssh polaris 'while ! mountpoint -q ~/mnt/; do if [ $((I++)) -gt 15 ]; then exit 1; fi; sleep 1; done'
if [ $? -ne 0 ]; then
echo 1>&2 Mount failed.
exit 2
fi
# Transfer data
rsync -az --delete --bwlimit 45 ~/misc /array/Dropbox/documents /array/pictures polaris:mnt/
# Unmount the encrypted filesystem
ssh polaris fusermount -u mnt
# Wait for child processes to exit
wait
mkfifo passwd
keyring_helper.py set <name> <server> <protocol>
초기 설정은 원격 서버와 데스크톱 에서 수행하는 것만큼 간단합니다 . 완료되면 데스크탑은 키링의 비밀번호를 fifo에 기록해야 하며 원격 truecrypt 프로세스는 stdin을 통해 이를 읽습니다.