为 Home 加密的用户启用 OpenSSH 证书认证

Ubuntu 不知从什么时候在安装时增加了用 ecryptfs 为 Home 启用加密的支持,要说这个功能挺好的,不用担心私有的文件会泄漏。但是你可能已经发现这样的加密引发了一个问题,启用了这样的加密功能的用户,无法通过增加 ~/.ssh/authorized_keys2 公钥实现证书认证。下面我们就来解决这个问题。

Home 加密的实现
1. 系统会创建 /home/.ecryptfs/ 文件夹,并在里面创建以用户名命名的文件夹,这个以用户名命名的文件夹里还创建了 .ecryptfs 和 .Private 两个文件夹,分别用于保存加密配置信息和加密后的数据。
2. 在用户的真实 Home(即没有挂载 ecryptfs 前的 Home )里有两个重要的符号链接文件 .ecryptfs 和 .Private 分别链接到 /home/.ecryptfs/用户名/.ecryptfs 和 /home/.ecryptfs/用户名/.Private 。
3. 当用户登录时,如果认证通过,会自动将真实 Home 里的 .ecryptfs 挂载到 真实 Home 文件夹上,即 /home/用户名/,这时用户名主目录就变成加密后的了,可以看到里面有很多的文件。
4. 当用户注销,自动卸载加密主目录。

解决办法
1. 复制证书的公钥到 /tmp 目录待用。
2. 注销用户,转到虚拟控制台(Ctrl+Alt+Fx)。
3. 登录用户,执行命令 ecryptfs-umount-private,完成后执行 cd /home/用户名 可以看到里面的文件已经不是原来的了。
4. 执行命令 mkdir .ssh 创建一个 .ssh 文件夹,复制刚才存放在 /tmp 里的公钥文件到刚创建的 .ssh 文件夹里,命名为 authorized_keys2。
5. 执行命令 ecryptfs-mount-private 并注销用户
6. 转到图形界面登录。
注:没有图形界面,直接做 2-5。

Over!

4 thoughts on “为 Home 加密的用户启用 OpenSSH 证书认证”

  1. 上面讲home目录mount的时候有点乱我看了两遍:
    这里不明白:

    3. 当用户登录时,如果认证通过,会自动将真实 Home 里的 .ecryptfs 挂载到 真实 Home 文件夹上,即 /home/用户名/,这时用户名主目录就变成加密后的了,可以看到里面有很多的文件。”

    前面那个真实的Home到底是指哪个啊?

Leave a Reply

Your email address will not be published. Required fields are marked *