使用 authorized_keys 通过 SSH 连接到具有加密主目录的 Ubuntu 系统?

使用 authorized_keys 通过 SSH 连接到具有加密主目录的 Ubuntu 系统?

我最近用 Ubuntu karmic 9.10 设置了一台新服务器,当我创建我的主目录时,我选择将其加密。现在,在将我的 authorized_keys 文件加载到 ~/.ssh 后,它无法被识别,因为我的主目录直到我登录后才解密。有没有办法让 SSH 密钥与 Ubuntu 下的加密主目录一起使用?

答案1

更改 sshd_config 文件中的此行:

AuthorizedKeysFile /etc/ssh/%u/authorized_keys

然后将你的 authorized_keys 文件移动到 /etc/ssh/your-username/authorized_keys

这个帖子记录解决这个问题的另一种方法。

答案2

这个解决方案的灵感来自于邮政。依我之见,这比修改 /etc/ssh/sshd_config 要好得多,因为它根本不需要 root 访问权限。

# 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

我刚刚花了一些时间研究这个问题,答案是这几乎从根本上是不可能的。可以通过 ssh 设置无密码公钥认证登录,这样你就不必输入密码了登录,但是这没有任何意义,因为您的主目录仍然是加密的。

简单的事实是,您的加密主目录是使用密码加密的*,因此解密的唯一方法是使用该密码。

如果你认为理论上应该可以在登录时使用你的 ssh 密钥解密挂载密码,那是行不通的,因为你的私钥根本不会被发送到服务器。

所以基本上,如果你想要加密,你就必须使用密码。出于同样的原因,加密的主目录与指纹登录不兼容。


*我知道它比单个密码更复杂,但现在我们先保持简单。

答案4

您可以使用更安全的公钥登录,然后输入密码后执行以下操作来挂载您的目录:

ecryptfs-mount-private

通过SSH登录后读取~/README.txt文件,你会发现你没有你的文件,因为加密目录没有被挂载。

无论如何,您都不应该使用无密码公钥登录。请查看 ssh-agent 以了解更好的方法。

相关内容