問題描述:
在本地使用iTerm2客戶端通過私鑰連接linux服務器時,報出了以下錯誤:
Permissions 0644 for '/Users/.../.ssh/xxxxx' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/.../.ssh/xxxxx": bad permissions
問題原因:
看報出的錯誤: It is required that your private key files are NOT accessible by others. 翻譯就是: (服務器)需要你的私鑰文件不能被(除你之外的)其他人訪問。
通過ll(ls -a)命令查看該私鑰文件的權限,果然是644。
為什麼私鑰文件644就會有錯呢?我在網上找到如下解釋:
基於“公私鑰”認證的方式進行ssh登錄的情況,會生成一對公私鑰(公鑰文件名類似x.pub,私鑰文件名x),公鑰放在服務器上,自已保留私鑰,當進行ssh登錄,ssh程序會發送私鑰到服務器與服務器上的公鑰做匹配,匹配,成功方可登錄。這裡有一個安全問題,若私鑰文件被別人盜取了怎麼辦?linux中通過強制設私鑰文件的權限為700,這樣賬號沒盜取的情況下,私鑰文件是不能被訪問到的,實現了一定程度上的安全保證。
644權限,所屬組用戶和其他用戶都具有讀取的權限,當非法用戶知道了私鑰的內容,就可以連接服務器,出於安全考慮,服務器要求私鑰文件不能被其他人訪問(NOT accessible by others)。
解決方案:
使用chmod 600 fileName 命令將私鑰文件改為只有自己可讀可寫,取消其他人的訪問權限即可。
閱讀更多 京京肚肚擼代碼 的文章