I am LAZY bones ? all linux

使用了ecryptfs的情况下,ssh的publickey登陆无效的解决办法

eCryptfs – Enterprise Cryptographic Filesystem 是linux下一个企业级的磁盘加密系统。
使用这个系统,可以使得用户的文件只有在用户登陆以后才是可见的,这样,即使你的硬盘被人偷走了,只要的你的密码足够安全不被破解,人家也无法读取你的私人文件(CGX真该用这个啊)。
目前,ubuntu 9.04 server 在安装时,已经可以选择用eCryptfs来加密用户的家目录了。
今天我装服务器的时候,觉得这个挺好玩的,就顺便启用了,却导致了一点点小问题,如下:
我在装好服务器openssh-server以后,很自然就把我的公钥复制到服务器上,来减少我输入密码的麻烦。没想到,登出了以后,再登进来时,原本应该不用密码的,却还提示我输入密码。后来还发现,只要有一个用密码登陆成功了以后,其他termianl再登陆的时候,就是正常的。于是想到可能就是 eCryptfs 搞的鬼,放google一搜,果然是的,已经有先例了。
那bug里解决办法也有了,我再贴一下:
方法一:

 $ /sbin/umount.ecryptfs_private
 $ cd $HOME
 $ chmod 700 .
 $ mkdir -m 700 .ssh
 $ chmod 500 .
 $ echo $YOUR_REAL_PUBLIC_KEY > .ssh/authorized_keys
 $ /sbin/mount.ecryptfs_private

这样就可以把你的公钥加到服务器的还未解锁的家目录下了。ssh的鉴权自然也可以顺利通过了。

方法二:
修改服务器的 /etc/ssh/sshd_config 把authorized_keys放到用户家目录以外的地方,以避开此问题。
例如加上:

AuthorizedKeysFile /etc/.ssh/%u/authorized_keys

延伸阅读:另一起SSH服务器端不认RSA公钥的故障

最后修改时间: 2009年09月11日 13:10

本文章发表于: 2009年09月11日 13:10 | 所属分类:故障分析. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

4 个评论 关于: “使用了ecryptfs的情况下,ssh的publickey登陆无效的解决办法”

  1. TualatriX 在 2009年09月11日 13:20 说:回复

    太棒了。

    等有空折腾也用eCryptfs!

  2. ManofPhysics 在 2009年12月11日 11:11 说:回复

    昨天配置Git用户权限时,碰到同样的问题,因为/home/user/.ssh的权限没有设置好导致的。为什么一个用户用publickey登陆成功后,其他人都必须用此法才能登录?

  3. reader 在 2009年12月29日 23:19 说:回复

    thx a lot. i have been working at this problem from 2hours more.

  4. Bill Lee 在 2010年09月30日 20:49 说:回复

    很奇怪呀
    ecryptfs 的密钥不是被用户口令加密了吗?
    用公钥验证登录后是怎么 mount ~/ 目录的?

发表评论