ins*_* me 34 permissions ssh private-key
我有一个加密的 FAT 卷(为了兼容性),其中包含一个私钥文件和其他敏感数据。
我想使用我的私钥通过 SSH 连接到我的服务器,但是当然,由于 FAT 不支持文件权限,它忽略了我的密钥,说它的权限太开放了。
所以目前我正在使用 0600 权限将它复制到我硬盘驱动器上的其他地方,使用它然后安全地擦除它,但这很痛苦。
有没有办法绕过这个非常 ssh/scp 命令行的权限检查?
编辑:精度:它是 OS X 上的 TrueCrypt 卷。
关于解决方案:下面接受的答案解决了我的问题(使用位于 Mac OS X 的 TrueCrypt 卷上的 SSH 密钥文件),但这是一种解决方法。看起来没有办法“绕过密钥文件权限检查”。
小智 46
从 stdin 添加密钥对我有用:
cat /path/to/id_rsa | ssh-add -k -
Run Code Online (Sandbox Code Playgroud)
use*_*437 18
AFAIK,无法通过 ssh 或 ssh-add 绕过密钥文件权限检查(并且您不能使用命名管道等来欺骗它)。此外,您实际上并不想欺骗 ssh,而只是为了能够使用您的密钥文件。
实际上,TrueCrypt 卷应该使您的数据保密,因此将卷安装为世界可读(TrueCrypt 的默认行为)并不是真正的最佳选择。如果您使用的是 FAT 格式的卷,您真的应该按照 Dan Carley 的建议调整安装选项。
尽管 TrueCrypt for OS X 尚未正确支持挂载选项(即使您使用命令行界面和手册页中的挂载选项启动 TC - 已经尝试过),但 OS X 确实支持基于卷名的挂载选项默认值.
您需要知道您的用户 ID(如果您是计算机的第一个/唯一用户,通常为 501)。您可以通过“id -u”获取它。
假设你的卷名是“PRIVATE”(卷名是大写的),你的 uid 是 501,你所要做的就是将此行添加到 /etc/fstab :
LABEL=PRIVATE none msdos -u=501,-m=700
Run Code Online (Sandbox Code Playgroud)
您需要以 root 身份创建/编辑此文件(默认 OSX 安装中不存在该文件):
sudo vim /etc/fstab
Run Code Online (Sandbox Code Playgroud)
下次挂载卷时,它的权限为 700,所有者 ID 为 501。
这也适用于 USB 驱动器(通常也格式化为 FAT)。
作为一个疯狂的解决方法,您可以制作一个包含您的私钥的 ext2 卷的磁盘映像并将其安装为循环设备,然后从那里使用您的 ssh 密钥。
制作一个 1MB 的空文件:
dd if=/dev/zero of=diskimg bs=1024 count=1024
Run Code Online (Sandbox Code Playgroud)
将其格式化为 ext2(当它说它不是设备时按 Y):
mke2fs diskimg
Run Code Online (Sandbox Code Playgroud)
将其安装在某处(以 root 身份):
mount -t ext2 -o loop diskimg /my/path/to/diskimg
Run Code Online (Sandbox Code Playgroud)
现在你有一个很小的 ext2 文件系统,你可以在上面设置权限。您可以编写一个脚本来挂载它,并确保这些权限具有基于您使用的任何系统的正确 UID/GID(因为 UID 可能不匹配)。它还需要 sudo/root 访问权限才能工作。
| 归档时间: |
|
| 查看次数: |
29324 次 |
| 最近记录: |