web-dev-qa-db-ja.com

暗号化されたhomedirを持つUbuntuシステムにauthorized_keysでSSHしますか?

最近、Ubuntu karmic 9.10を使用して新しいサーバーをセットアップし、ホームディレクトリを作成したときに、暗号化することを選択しました。さて、authorized_keysファイルを〜/ .sshにロードした後、ログインするまでホームディレクトリが復号化されないため、認識されません。Ubuntuで暗号化されたホームディレクトリでSSHキーを機能させる方法はありますか?

38
Josh

Sshd_configファイルの次の行を変更します。

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

次に、authorized_keysファイルを/ etc/ssh/your-username/authorized_keysに移動します

この投稿 これを解決する別の方法を文書化します。

39
djhowell

このソリューションは、この post に触発されました。私見では、ルートアクセスをまったく必要としないため、/ 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
8
Marc-Antoine

私はこれをいじるのに少し時間を費やしただけで、答えは基本的にほとんど不可能だということです。 is sshを介してパスワードなしの公開鍵認証ログインを設定できるため、log inにパスワードを入力する必要はありませんが、それはできませんホームディレクトリはまだ暗号化されているため、どこにでもアクセスできます。

単純な事実は、暗号化されたホームディレクトリはパスワード*で暗号化されるため、それを解読する唯一の方法はそのパスワードを使用することです。

また、理論的には、ログイン時にsshキーを使用してマウントパスフレーズを復号化できるはずだと考えている場合、プライベートキーがサーバーに送信されることはないため、機能しません。

したがって、基本的に、暗号化が必要な場合は、パスワードを使用する必要があります。暗号化されたホームディレクトリは、同じ理由で指紋ログインと互換性がありません。


*単一のパスワードよりも複雑であることはわかっていますが、ここでは簡単にしていきましょう。

2

デフォルトの設定を変更したくない場合(そうしないと、ファイルが期待どおりの場所にあることが好きです)、それを行う方法に関する私の投稿をご覧になることをお勧めします。

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 <[email protected]>

# 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
2
B. Davis

より安全な公開鍵を使用してログインし、次のコマンドを実行してパスワードを入力した後にディレクトリをマウントできます。

ecryptfs-mount-private

読む ~/README.txt SSH経由でログインした後、暗号化されたディレクトリがマウントされていないため、ファイルがないことがわかります。

いずれにしても、ログインにパスワードなしの公開鍵を使用するべきではありません。より良い方法については、ssh-agentを参照してください。

0
Bob