일부 클라이언트 인증을 요구하면서 비밀번호를 입력하지 않고 SSH를 통해 암호화된 컨테이너의 암호를 해독하려면 어떻게 해야 합니까?

일부 클라이언트 인증을 요구하면서 비밀번호를 입력하지 않고 SSH를 통해 암호화된 컨테이너의 암호를 해독하려면 어떻게 해야 합니까?

공개 키 인증을 통해 서버에 로그인한 다음 컨테이너를 설치합니다(예: 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]));

keychain.py

백업 파일

#!/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 passwdkeyring_helper.py set <name> <server> <protocol>초기 설정은 원격 서버와 데스크톱 에서 수행하는 것만큼 간단합니다 . 완료되면 데스크탑은 키링의 비밀번호를 fifo에 기록해야 하며 원격 truecrypt 프로세스는 stdin을 통해 이를 읽습니다.

관련 정보