我有一个非常具体的要求,要求多个用户使用一个私钥。我知道这有多糟糕。问题是,如果身份文件的权限允许(在我的情况下为 444),ssh 将简单地忽略它们。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @
WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0444 for '/var/vendor/id_rsa' are too open. It is
recommended that your private key files are NOT accessible by others.
This private key will be ignored.
Run Code Online (Sandbox Code Playgroud)
从手册页
包含用于身份验证的私钥。这些文件包含敏感数据,用户应该可以读取但其他人无法访问(读/写/执行)。如果其他人可以访问,ssh 将简单地忽略私钥文件。
有没有办法强制 ssh 使用密钥而不检查权限?
小智 14
正如其他答案所提到的,似乎无法强制 SSH 忽略该选项。检查发生在authfile.c函数sshkey_perm_ok 中:
if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
error("@ WARNING: UNPROTECTED PRIVATE KEY FILE! @");
error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
error("Permissions 0%3.3o for '%s' are too open.",
(u_int)st.st_mode & 0777, filename);
error("It is required that your private key files are NOT accessible by others.");
error("This private key will be ignored.");
return SSH_ERR_KEY_BAD_PERMISSIONS;
}
Run Code Online (Sandbox Code Playgroud)
如果无法更改密钥文件的权限,则解决方案是下载 OpenSSH 源代码,从代码中删除该检查并重新构建它。
归档时间: |
|
查看次数: |
15919 次 |
最近记录: |