绕过ssh密钥文件权限检查

我有一个encryption的FAT卷(兼容性),包含私人密钥文件和其他敏感数据。

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

所以目前我在0600权限的硬盘上将其复制到其他地方,然后使用它,然后安全地删除它,但这是一个痛苦。

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

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

在解决scheme:下面接受的答案解决了我的问题(在Mac OS X上使用位于TrueCrypt卷上的SSH密钥文件),但这是一个解决方法。 看起来像没有办法“绕过关键文件权限检查”。

AFAIK,没有办法绕过ssh或ssh-add的密钥文件权限检查(并且你不能用命名pipe道或类似的方法欺骗它)。 此外,你实际上并不想欺骗SSH,但只是为了能够使用你的密钥文件。

事实上,TrueCrypt卷应该保持数据的私密性,因此将卷装入世界可读(TrueCrypt的默认行为)并不是最佳select。 如果你使用的是FAT格式的卷,你应该调整安装选项,正如Dan Carley所build议的那样。

尽pipeTrueCrypt for OS X尚未正确支持安装选项(即使使用命令行界面和手册页中的安装选项启动TC – 已经尝试过),但OS X确实支持基于卷名的安装选项默认值。

你需要知道你的用户名(如果你是电脑的第一个/唯一的用户,通常是501)。 你可以用“id -u”来得到它。

假设你的卷名是“PRIVATE”(卷名是大写的),你的uid是501,你所要做的就是把这一行join到/ etc / fstab中:

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

您需要成为root用户才能创build/编辑此文件(在默认的OSX安装中不存在):

 sudo vim /etc/fstab 

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

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

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

制作一个1MB的空文件:

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

格式化它ext2(当它说不是一个设备时按Y):

 mke2fs diskimg 

将其挂载到某处(以root身份):

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

现在你有一个小的ext2文件系统,你可以设置权限。 你可以编写一个脚本来挂载它,并确保这些权限具有正确的UID / GID根据你在任何系统(因为UID可能不匹配)。 它也需要sudo / root权限才能工作。

那么在你的/etc/ssh/sshd_config (和重载/重新启动sshd)中添加StrictModes no是如何?

编辑:哎呀,这个选项只是服务器端:/

从stdin添encryption钥为我工作:

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

如果我没有记错, ssh-agent不检查密钥权限。 所以这可能工作:

  [-S“$ SSH_AUTH_SOCK”] ||  eval $(ssh-agent) 
  ssh-add path / to / id_rsa 

你能修改你的挂载选项( umaskuidgid )吗?