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


38

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


より良いタグの提案を歓迎しましたが、提案されたタグで本当に良い一致を見つけることができませんでした。
ジョシュ

1
実際のところ、それらはスポットだと思います。ありますubuntuタグは、しかし、私はこの問題は、特定のOSに固有ではないと思います。
いんちきのキホーテ

Ubuntu 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
最初の解決策は完璧に聞こえると思いましたが、うまくいきませんでした。理由はわかりません。しかし、あなたがリンクした投稿は素晴らしい働きをしました。ありがとう!
ジョシュ

3
ジョシュ-ターゲットユーザーはこれらのファイルの所有者であり、アクセス許可は600(ディレクトリの場合は700)ですか?
NVRAM

1
完全な手順については、このリンクを参照してください:UbuntuのSSHキー。トラブルシューティングセクションまでスクロールします。
ジートン

8

このソリューションは、この投稿に触発されました。私見では、/ 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

私は何が起こるかを説明して編集をした:あなたはにマシンにアクセスしたいとあなたの公開鍵(s)は、保存authorized_keys中に/home/**.ecryptfs**/$USERあなたからそれを暗号化し、リンクなしでは、あなたの暗号化されていない家だけでなく、家を暗号化。.profile暗号化されていないホームの新しいものは、暗号化されたホームディレクトリをマウントし、そこに「cd」し、実際のをソースします.profile
LiveWireBT

新しい16.04インストールで意図したとおりに機能します。いくつかのコメント:暗号化されていないホームは書き込み可能ではない(これは理にかなっており、ユーザーが誤ってデータをそこに保存することによってすべてを破壊したくない)ので、アクセス許可を一時的に変更します。また、GUIとlightdmからログアウトした端末から、または使用しているDMが停止した場合は、このすべてを端末から実行する必要があります。ecryptfs-mount-privateGUIにログインしていない限り、公開鍵を介してログインに成功すると、毎回ユーザーパスワードを要求します。私の編集では、いくつかのエコーをヒアドキュメントに置き換えています。入力の繰り返しは少なくなります。混同しないでください。
LiveWireBT

2

私はこれをいじくり回しましたが、その答えは基本的にほとんど不可能です。あるあなたがするためにあなたのパスワードを入力する必要はありませんので、ssh経由でパスワードなしの公開鍵認証ログインを設定することも可能にログインし、あなたのホームディレクトリがまだ暗号化されているので、それはどこでもあなたを取得していません。

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

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

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


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


まあ、djhowellの答えは完璧に機能したので、おそらく私のホームディレクトリはOSが持っているキーで暗号化され、それを解読するために使用できます。その上、SSHでログインするとき、sshdは私のホームディレクトリを復号化する方法を知らないため、パスワード認証で動作する理由を説明しません。
ジョシュ

待ってください。パスワードを入力せずにsshでログインすると、暗号化されたホームディレクトリが実際にマウントされますか?
ライアンC.トンプソン

はい、そうです。ログアウトするとマウント解除されます。
ジョシュ

まあ、それは奇妙です。私は答えに記述した動作を取得します。私のプライベートディレクトリは、ログインにパスワード(具体的にはログインパスワード)が関係する場合にのみマウントされます。公開鍵を使用して機能させるために、あなたがどうしたかは疑問です。
ライアンC.トンプソン

@Ryan ThompsonはUbuntu 9.10を使用していますか?
ジョシュ

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.