Ssh
強制 ssh 忽略 id_rsa 權限
我有一個非常具體的要求,需要多個使用者使用私鑰。我知道這有多糟糕。問題是,如果身份文件的權限是允許的(在我的情況下為 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 原始碼,從程式碼中刪除該檢查並重新建構它。