使用了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公钥的故障
TualatriX 在 2009年09月11日 13:20 说:【 】
太棒了。
等有空折腾也用eCryptfs!
ManofPhysics 在 2009年12月11日 11:11 说:【 】
昨天配置Git用户权限时,碰到同样的问题,因为/home/user/.ssh的权限没有设置好导致的。为什么一个用户用publickey登陆成功后,其他人都必须用此法才能登录?
reader 在 2009年12月29日 23:19 说:【 】
thx a lot. i have been working at this problem from 2hours more.
Bill Lee 在 2010年09月30日 20:49 说:【 】
很奇怪呀
ecryptfs 的密钥不是被用户口令加密了吗?
用公钥验证登录后是怎么 mount ~/ 目录的?