如何在 Mac OSX 上的加密卷内设置 .ssh 目录并仍然拥有公钥登录?

如何在 Mac OSX 上的加密卷内设置 .ssh 目录并仍然拥有公钥登录?

我的 .ssh 目录位于加密的稀疏映像中。例如 ~/.ssh 是指向 /Volumes/VolumeName/.ssh 的符号链接

问题是,当我尝试使用公钥通过 ssh 进入该机器时,我在 /var/log/secure.log 中看到以下错误消息:

Authentication refused: bad ownership or modes for directory /Volumes

有什么方法可以干净利落地解决这个问题吗?

更新:

~/.ssh 和 authorized_keys 上的权限正确:

> ls -ld ~
drwxr-xr-x+ 77 vitaly  staff  2618 Mar 16 08:22 /Users/vitaly/
> ls -l ~/.ssh
lrwxr-xr-x  1 vitaly  staff  22 Mar 15 23:48 /Users/vitaly/.ssh@ -> /Volumes/Astrails/.ssh
> ls -ld /Volumes/Astrails/.ssh 
drwx------  3 vitaly  staff  646 Mar 15 23:46 /Volumes/Astrails/.ssh/
> ls -ld /Volumes/Astrails/
drwx--x--x@ 18 vitaly  staff  1360 Jan 12 22:05 /Volumes/Astrails//
> ls -ld /Volumes/
drwxrwxrwt@ 5 root  admin  170 Mar 15 20:38 /Volumes//

错误消息表明问题出在/Volumes,但我没有看到问题。

是的,它是 o+w,但它也是 +t,这应该没问题,但显然不是。

问题是我无法更改 /Volumes 权限(或者更确切地说不应该更改),但我确实希望公钥登录能够正常工作。

一开始我考虑将镜像挂载到 /Volumes 以外的其他地方,但标准 OSX 挂载会在登录时自动完成。我在这里询问了这个问题:如何在 osx 上更改磁盘映像的默认挂载目录 我得到的唯一答案是“你不能”;)

我可以通过编写一些 shellscript 来手动将卷安装在非标准位置,但这将是一种严重的黑客攻击,我仍在寻找一种更干净的方式来做我需要的事情。

答案1

$ man sshd_config;答案就在这里

 StrictModes
         Specifies whether sshd(8) should check file modes and
         ownership of the user's files and home directory before
         accepting login.  This is normally desirable because
         novices sometimes accidentally leave their directory or
         files world-writable.  The default is ``yes''.

$ sudo emacs /etc/sshd_config;关闭模式检查

-   #StrictModes yes
+   StrictModes no

$ /usr/sbin/sshd; 重新启动 sshd

只是不要忘记保持你的.ssh 文件权限正确。

答案2

现在,我不确定如何在 OS/X 上具体执行此操作,但由于 OS/X 是 BSD 系统,它应该与 FreeBSD 类似。

以下是在 FreeBSD 上执行的操作。

sshd不会跟踪其密钥文件的符号链接。这样做是为了安全。因此,您需要更改sshd尝试查找密钥文件的位置。

您需要修改/etc/ssh/sshd_config文件并查找AuthorizedKeysFile条目。默认为.ssh/authorized_keys(相对于用户的主目录)。

将条目更改为 authorized_keys 文件实际位置的完整(绝对)路径。有一定数量的令牌可用 - 最有用的是使用%u登录用户的用户名进行替换。

例如:

AuthorizedKeysFile /Volumes/EncryptedData/%u/.ssh/authorized_keys

会给你/Volumes/EncryptedData/vitaly/.ssh/authorized_keys

如果只有一个用户使用该系统,那么省略 %u 扩展并只使用单个路径是相当安全的 - 但请注意:如果你添加更多用户,他们都使用相同的密钥文件因此,最好从一开始就使用用户名扩展以防万一(您不想在 6 个月后添加用户并忘记您已经这样做了)

因此,如果您的系统上有一个 /etc/ssh/sshd_config 文件,那么此方法应该有效。

答案3

确保权限正确。请参阅这里

相关内容