SSH 公钥不起作用;我的主目录已加密

shv*_*hva 6 ssh home ecryptfs public-key-authentication

我在远程计算机上安装了 Ubuntu LTS 14.04 服务器版,并在远程计算机上添加了我的本地公钥~/.ssh/authorized_keys。我发现我还是需要使用密码登录远程计算机,即使在远程计算机上设置~/.ssh为700和~/.ssh/*600的权限后。但是,一旦我登录,我就可以开始使用公钥对其他 ssh 会话进行授权。

我的主目录是加密的。

我怎样才能解决这个问题?

dev*_*ull 5

这是我在评论中发布的链接中的解决方案。这来自这里,它引用了这个超级用户帖子

为要存储的密钥创建.ssh文件夹/home

sudo mkdir /home/.ssh
Run Code Online (Sandbox Code Playgroud)

将现有的 authorized_keys 文件.ssh作为用户名移动到目录中

sudo mv ~/.ssh/authorized_keys /home/.ssh/username
Run Code Online (Sandbox Code Playgroud)

在用户.ssh目录中创建到authorized_keys 文件的符号链接

ln -s /home/.ssh/username ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

更新sshd_config文件设置的新路径的authorized_keys文件

sudo vim /etc/ssh/sshd_config
Run Code Online (Sandbox Code Playgroud)

将该AuthorizedKeysFile行更改为:

AuthorizedKeysFile      /home/.ssh/%u
Run Code Online (Sandbox Code Playgroud)

重新启动计算机

sudo shutdown -r now
Run Code Online (Sandbox Code Playgroud)

登录到您的服务器,您应该会看到一个最小的未解密主目录...您需要在其中创建和编辑 .profile 文件ecryptfs以安装您的主目录。

sudo vim ~/.profile
Run Code Online (Sandbox Code Playgroud)

添加这些行:

ecryptfs-mount-private
cd /home/username
Run Code Online (Sandbox Code Playgroud)

注销/重新启动,然后重新登录。在 SSH 密钥身份验证后,应该会提示您输入密码,然后会显示您解密的主目录。

您现在应该可以每次都使用 SSH 密钥登录,无论您的主目录是否被解密。