암호화 된 homedir이있는 Ubuntu 시스템에 authorized_keys가있는 SSH?


38

최근 Ubuntu karmic 9.10으로 새 서버를 설정했으며 홈 디렉토리를 만들 때 암호화하도록 선택했습니다. 이제 authorized_keys 파일을 ~ / .ssh로로드 한 후 로그인 할 때까지 홈 디렉토리가 해독되지 않기 때문에 인식되지 않습니다. Ubuntu에서 암호화 된 홈 디렉토리와 SSH 키를 작동시키는 방법이 있습니까?


더 나은 태그 제안을 환영하며 제안 된 태그에서 실제로 일치하는 항목을 찾을 수 없습니다.
Josh

1
나는 그것이 실제로 자리에 있다고 생각합니다. 거기의 ubuntu태그하지만 난이 문제가 특정 OS에 특정한 생각하지 않습니다.
quck quixote

우분투 11.10 에서이 문제의 증상은 컴퓨터에 ssh를 시도하는 첫 번째 시도는 암호 인증이 필요하다는 것입니다 ( authorized_keys아직 액세스 할 수 없기 때문에 ). 다른 ssh 연결을 시작하면 키 인증이 작동합니다.
mindless.panda

답변:


39

sshd_config 파일에서이 줄을 변경하십시오.

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

그런 다음 authorized_keys 파일을 / etc / ssh / your-username / authorized_keys로 이동하십시오.

이 게시물은 이것을 해결하는 다른 방법을 설명합니다.


1
첫 번째 솔루션은 완벽하게 들리지만 나에게는 효과가 없다고 생각했습니다. 이유가 확실하지 않습니다. 그러나 당신이 연결 한 게시물은 훌륭하게 작동했습니다. 감사!
Josh

3
Josh-대상 사용자가 해당 파일의 소유자이며 권한 600 (dir은 700)입니까?
NVRAM

1
자세한 내용은이 링크를 참조하십시오 : Ubuntu의 SSH 키 . 문제 해결 섹션으로 스크롤하십시오.
jjeaton

8

이 솔루션은이 게시물 에서 영감을 받았습니다 . IMHO 루트 액세스가 필요하지 않기 때문에 / etc / ssh / sshd_config를 수정하는 것보다 훨씬 좋습니다.

# Make your public key accessible
mkdir -m 700 /home/.ecryptfs/$USER/.ssh
echo $YOUR_PUBLIC_KEY > /home/.ecryptfs/$USER/.ssh/authorized_keys
ln -s /home/.ecryptfs/$USER/.ssh/authorized_keys ~/.ssh/authorized_keys
ecryptfs-umount-private
chmod 700 $HOME
mkdir -m 700 ~/.ssh
ln -s /home/.ecryptfs/$USER/.ssh/authorized_keys ~/.ssh/authorized_keys

# Make it auto-mount with first login.
# Note: it can cause problems with automated login.
echo /usr/bin/ecryptfs-mount-private > ~/.profile
echo cd >> ~/.profile
echo source .profile >> ~/.profile
ecryptfs-mount-private

3
이것이 실제로하는 일에 대한 요약 설명을 제공 할 수 있습니까?
mindless.panda

내가 무슨 일을 설명 할 수있는 편집을했다 : 당신은 당신의 컴퓨터에 액세스 할있는 공개 키 (들) 저장 authorized_keys에서 /home/**.ecryptfs**/$USER당신의 암호화되지 않은 가정뿐만 아니라 당신에게서 그것을 암호화 및 링크없이 가정을 암호화합니다. .profile암호화되지 않은 홈 의 새로운 기능 은 암호화 된 홈 디렉토리 인 "cd"를 마운트하고 real을 소싱해야합니다 .profile.
LiveWireBT

새로운 16.04 설치에서 의도 한대로 작동합니다. 몇 가지 언급 : 암호화되지 않은 집은 쓸 수 없었습니다 (이는 사용자가 실수로 데이터를 저장하여 모든 것을 파괴하는 것을 원하지 않습니다). 따라서 권한을 일시적으로 변경하십시오. 또한 GUI와 lightdm에서 로그 아웃하거나 사용중인 DM을 중지 한 터미널에서이 모든 작업을 수행해야합니다. ecryptfs-mount-privateGUI에 로그인하지 않은 경우 공개 키를 통한 로그인 후 매번 사용자 비밀번호를 묻습니다. 내 편집은 몇 개의 에코를 here 문서로 대체합니다. 입력하는 것이 덜 반복적이며 혼동하지 마십시오.
LiveWireBT

2

방금이 문제를 해결하는 데 시간을 보냈으며 대답은 거의 근본적으로 불가능하다는 것입니다. 이다 당신이 당신의 암호를 입력 할 필요가 없습니다, ssh를 통해 암호없이 공개 키 인증 로그인을 설정할 수 에 로그인 하지만, 홈 디렉토리가 여전히 암호화되어 있기 때문에 즉, 어디서나 당신을 얻을하지 않습니다.

간단한 사실은 암호화 된 홈 디렉토리가 비밀번호 *로 암호화되므로이를 해독하는 유일한 방법은 해당 비밀번호를 사용하는 것입니다.

이론상 로그인시 ssh 키를 사용하여 마운트 암호를 해독 할 수 있어야한다고 생각한다면 개인 키가 전혀 서버로 전송되지 않기 때문에 작동하지 않습니다.

따라서 기본적으로 암호화를 원하면 암호를 사용해야합니다. 암호화 된 홈 디렉토리는 같은 이유로 지문 로그인과 호환되지 않습니다.


* 단일 비밀번호보다 복잡하다는 것을 알고 있지만 지금은 단순하게 유지합시다.


djhowell의 대답은 완벽하게 작동 했으므로 아마도 내 홈 디렉토리는 OS가 가지고있는 키로 암호화되어 있으며 해독하는 데 사용할 수 있습니다. 또한 SSH를 사용할 때 sshd는 내 홈 디렉토리를 해독하는 방법을 알지 못하므로 암호 인증으로 작동하는 이유를 설명하지 않습니다.
Josh

암호를 입력하지 않고 ssh를 통해 로그인하면 암호화 된 홈 디렉토리가 실제로 마운트됩니까?
Ryan Thompson

그렇습니다. 그리고 로그 아웃 할 때 마운트가 끊어졌습니다.
Josh

글쎄, 그건 이상하다. 내 답변에 설명 된 동작을 얻습니다. 내 개인 디렉토리는 로그인에 비밀번호 (특히 내 로그인 비밀번호)가 포함 된 경우에만 마운트됩니다. 공개 키를 사용하기 위해 다르게 수행 한 것이 궁금합니다.
Ryan Thompson

@Ryan Thompson 우분투 9.10을 사용하고 있습니까?
Josh

1

기본 설정을 수정하는 것을 좋아하지 않는다면 (파일이 예상되는 위치에 파일이 마음에 들지 않습니다.) 그러면 내 게시물을 살펴보고 싶을 것입니다.

http://www.enetworkservices.net/wordpress/ssh-public-keys-with-encrypted-home-directory.html

한마디로. 키를 사용자의 암호화 된 버전에 넣고 암호화 된 버전을 다른 사용자 ~/.ssh와 심볼릭 링크합니다 ~/.ssh. 이런 식으로 항상 존재합니다.

나 같은 게으른 사람들을 위해 여기 당신을 위해 그것을하는 스크립트가 있습니다. 일반 사용자로 실행하십시오. 루트 액세스 또는 권한이 필요하지 않으며 서버 구성 변경이 필요하지 않습니다. 순수한 일반 사용자 설정.

#!/bin/bash
#
# Encrypted Home DIR SSH Key fix.
# Requires modification to sshd_config
#  AuthorizedKeys /etc/ssh/authorized_keys/%u/authorized_keys
# sudo mkdir /etc/ssh/authorized_keys -m 777
# for existing users run from home directory when login.
# for new users modify /etc/skel to include .bashrc to call script.
#
# Author: Benjamin Davis <bdavis@enetworkservices.net>

# Check if directory exists.
if [ ! -d "/etc/ssh/authorized_keys/$LOGNAME" ]
then
    # Make directory with restricted permissions.
    echo "Creating user ssh directory."
    mkdir /etc/ssh/authorized_keys/$LOGNAME -m 700
fi

# Check real users home .ssh folder
if [ -d "/home/$LOGNAME/.ssh" ]
then
    # Check if dir is symlink
    if [ ! -h /home/$LOGNAME/.ssh ]
    then
        echo "Moving configs."
        mv /home/$LOGNAME/.ssh/. /etc/ssh/authorized_keys/$LOGNAME/.
        rm -rf /home/$LOGNAME/.ssh/
        ln -s -T /etc/ssh/authorized_keys/$LOGNAME /home/$LOGNAME/.ssh
        clear
    fi
else
    # Does not exist so link it.
    if [[ $EUID -ne 0 ]]
    then
        echo "User ssh config folder does not exist. Creating."
        mkdir /home/$LOGNAME/.ssh -m 700
        ln -s -T /etc/ssh/authorized_keys/$LOGNAME /home/$LOGNAME/.ssh
    fi
fi

0

보다 안전한 공개 키를 사용하여 로그인 한 다음 비밀번호를 입력 한 후 다음을 실행하여 디렉토리를 마운트 할 수 있습니다.

ecryptfs-mount-private

읽기 ~/README.txtSSH를 통해 로그인 한 후 파일을, 당신은 암호화 된 디렉토리가 장착되지 않기 때문에 당신이 당신의 파일이없는 것을 확인할 수 있습니다.

어쨌든 로그인 할 때 암호가없는 공개 키를 사용해서는 안됩니다. 더 나은 방법은 ssh-agent를보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.