Ssh

強制 ssh 忽略 id_rsa 權限

  • February 15, 2022

我有一個非常具體的要求,需要多個使用者使用私鑰。我知道這有多糟糕。問題是,如果身份文件的權限是允許的(在我的情況下為 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.

從手冊頁

包含用於身份驗證的私鑰。這些文件包含敏感數據,使用者應該可以讀取,但其他人不能訪問(讀/寫/執行)。如果其他人可以訪問,ssh 將簡單地忽略私鑰文件。

有沒有辦法強制 ssh 使用密鑰而不檢查權限?

正如其他答案所提到的,似乎沒有辦法強制 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;
}

如果無法更改密鑰文件的權限,解決方案是下載 OpenSSH 原始碼,從程式碼中刪除該檢查並重新建構它。

引用自:https://serverfault.com/questions/582396