我最近使用Ubuntu karmic 9.10设置了新服务器,当我创建主目录时,我选择对其进行加密。现在,将我的authorized_keys文件加载到〜/ .ssh后,由于在登录后才解密我的主目录,因此无法识别。是否有办法使SSH密钥在Ubuntu下与加密的主目录一起使用?
ubuntu
标签,但我不认为此问题特定于任何特定的操作系统。
authorized_keys
尚无法访问)。如果我启动另一个ssh连接,则密钥认证有效。
我最近使用Ubuntu karmic 9.10设置了新服务器,当我创建主目录时,我选择对其进行加密。现在,将我的authorized_keys文件加载到〜/ .ssh后,由于在登录后才解密我的主目录,因此无法识别。是否有办法使SSH密钥在Ubuntu下与加密的主目录一起使用?
ubuntu
标签,但我不认为此问题特定于任何特定的操作系统。
authorized_keys
尚无法访问)。如果我启动另一个ssh连接,则密钥认证有效。
Answers:
在您的sshd_config文件中更改此行:
AuthorizedKeysFile /etc/ssh/%u/authorized_keys
然后将您的authorized_keys文件移动到/ etc / ssh /您的用户名/ authorized_keys
这篇文章记录了解决此问题的另一种方法。
此解决方案受此文章启发。恕我直言,这比修改/ 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
authorized_keys
在/home/**.ecryptfs**/$USER
不加密,并链接到它从你的加密的家,以及未加密的家。.profile
未加密主目录中的新目录应将已加密的主目录挂载到它的“ cd”目录并提供真实目录.profile
。
ecryptfs-mount-private
除非您登录到GUI,否则每次通过公共密钥成功登录后都要求输入用户密码。我的编辑用here文档替换了一些回声,键入的重复性较小,不要为此感到困惑。
我只是花了一些时间来解决这个问题,答案是,从根本上讲这几乎是不可能的。这是可能通过ssh设置无密码公钥验证的登录,这样你就不会在你的密码键入登录,但是,这并不让你随时随地,因为你的主目录仍然是加密。
一个简单的事实是,加密的主目录是使用密码*加密的,因此解密它的唯一方法是使用该密码。
而且,如果您认为从理论上讲应该可以使用ssh密钥在登录时解密安装密码,那么这将不起作用,因为您的私钥根本不会发送到服务器。
因此,基本上,如果要加密,则必须使用密码。出于相同的原因,加密的主目录与指纹登录不兼容。
*我知道它比单个密码要复杂,但是现在让我们保持简单。
如果您不喜欢修改默认设置(我不喜欢,我喜欢我的文件位于期望的位置),那么您可能想看看我的文章中如何做到这一点:
http://www.enetworkservices.net/wordpress/ssh-public-keys-with-encrypted-home-directory.html
简而言之。您将密钥放在用户~/.ssh
的加密版本中~/.ssh
,并将加密版本符号链接到另一个用户。这样,它就永远存在。
对于像我这样的懒惰人,这里有一个脚本可以为您做。只需以普通用户身份运行即可。不需要root访问或权限,也不需要更改服务器配置。纯普通用户设置。
#!/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