绕过SSH密钥文件权限检查


29

我有一个加密的FAT卷(出于兼容性考虑),其中包含一个私钥文件和其他敏感数据。

我想使用我的私钥通过SSH连接到服务器,但是,由于FAT不支持文件权限,因此它会忽略我的密钥,因为它的权限太开放了。

因此,目前我正在将其复制到硬盘上具有0600权限的其他位置,使用它然后安全地擦除它,但这很痛苦。

有没有办法绕过这个非常ssh / scp命令行的权限检查?

编辑:精度:这是OS X上的TrueCrypt卷。

关于解决方案:以下可接受的答案解决了我的问题(在Mac OS X中使用TrueCrypt卷上的SSH密钥文件),但这是一种解决方法。似乎没有办法“绕过密钥文件权限检查”。

Answers:


18

AFAIK,无法使用ssh或ssh-add绕过密钥文件权限检查(并且不能使用命名管道之类的方法来欺骗它)。此外,您实际上并不想欺骗ssh,而只是想使用您的密钥文件。

实际上,TrueCrypt卷应该使您的数据保持私密性,因此将卷安装为世界可读(TrueCrypt的默认行为)并不是真正的最佳选择。如果您使用的是FAT格式的卷,则确实应按照Dan Carley的建议调整安装选项。

尽管TrueCrypt尚未正确支持OS X的挂载选项(即使您已使用命令行界面和手册页中的挂载选项启动TC(已尝试),但OS X仍支持基于卷名的挂载选项默认值。

您需要知道您的用户ID(如果您是计算机的第一个/唯一用户,则通常为501)。您可以使用“ id -u”获得它。

假设您的卷名是“ PRIVATE”(卷名用大写字母表示),而uid是501,您所要做的就是将此行添加到/ etc / fstab中:

LABEL=PRIVATE none msdos -u=501,-m=700

您需要是root用户才能创建/编辑此文件(默认OSX安装中不存在该文件):

sudo vim /etc/fstab

下次安装该卷时,它将具有权限700和所有者ID 501。

这也适用于USB驱动器(通常也以FAT格式格式化)。


完美地工作
instanceof me

我无法使用FAT格式的卷来使用此方法获得正确的权限。但是,选择“ Mac OS Extended”并选择安装在其他操作系统上的选项,使我可以使用chmod设置权限。
空置2014年

这很棒。挂载安全卷时,将挂载到主目录中的特定点。我发现我必须用挂载点的显式名称替换'none'的值。
亚历克·极客

1
即使/etc/fstab在较新的OS X上没有文件,此方法也起作用。只需etc/fstab使用以上
命令

33

从stdin添加密钥对我有用:

cat /path/to/id_rsa | ssh-add -k -

1
为什么没有一个赞?它可以直接使用而无需安装,并且无论如何您都在使用ssh-agent,不是吗?
pscheit

4
就像魅力一样工作-应该接受答案
吗?hdave

1
这吸引了我。使用WSL Ubuntu。谢谢!
mydoglixu

7

作为疯狂的解决方法,您可以制作一个包含私钥的ext2卷的磁盘映像,并将其挂载为循环设备,然后从那里使用ssh密钥。

制作一个1MB的空文件:

dd if=/dev/zero of=diskimg bs=1024 count=1024

将其格式化为ext2(当它不是设备时按Y键):

mke2fs diskimg

将其挂载到某处(作为根):

mount -t ext2 -o loop diskimg /my/path/to/diskimg

现在您有了一个小的ext2文件系统,可以对其设置权限。您可以编写脚本来挂载它,并确保这些权限根据您所使用的系统而具有正确的UID / GID(因为UID可能不匹配)。它还需要sudo / root访问权限。


似乎没有更简单的选择
instanceof me

1
太错了-但非常酷:)
沃伦

1
@warren:我确实以“疯狂”作为开头。:-D
凯尔·史密斯,

2

如何添加StrictModes no到您的/etc/ssh/sshd_config(和reload / restart sshd)呢?

编辑:哎呀,此选项仅在服务器端:/


1

如果我没记错的话,ssh-agent不检查关键权限。所以这可能工作:

[-S“ $ SSH_AUTH_SOCK”] || 评估$(ssh-agent)
SSH添加路径/到/ ID_RSA

仅供参考,这不起作用。 ssh-add会检查文件权限。
凯尔·史密斯

0

你可以修改你的安装选项(umaskuidgid),以适应?


AFAIK不,这是TrueCrypt卷,我唯一的选择是将其安装为只读,而ssh仍抱怨它是0777
instanceof me
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.