我有一个受密码保护的私钥文件。但是当我尝试使用它时,ssh 会抱怨权限问题:
ssh -i example.pem root@myserver
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'example.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "example.pem": bad permissions
Stackoverflow 和 Serverfault 上有很多关于此问题的问题。它们都可以用“遵守!”来概括。好的,我会的。但我不明白的是:当文件受密码保护时,SSH 为何会抱怨?
当我更改权限并重试时,SSH 会要求输入密码:
ssh -i example.pem root@myserver
Enter passphrase for key 'example.pem':
因此,SSH 知道它是受密码保护的,但当文件可以被所有人看到时,它仍然会发出警告。为什么?由于文件受密码保护,我可以在我的 Facebook 个人资料上在线发布它。(如果我有的话。)或者密码是假的,没有它就可以提取密钥?我遗漏了什么?
(我不是问如何解决这个问题。关于这个问题已经有足够多的问题了。)
答案1
简而言之:安全性。即使密钥的密码保护不是假的(据我所知,密码是加密密钥),并且可以防止有权访问私钥文件的人,但它仍然可以被破解。
问题是攻击者可以暴力猜测密码(假设我下载了你的私钥并尝试使用随机生成的密码来解密;那么这只是一个 CPU 时间的问题)。文件权限只会造成额外的障碍,至少对于非特权用户/进程而言是如此。