Last Updated on 2022-01-09 by Clay
最近我在另外一台伺服器上配置了自己的 SSH 金鑰,主要目的是希望在另外一台伺服器上跟他人共同撰寫的程式碼,能夠透過 git
指令來將專案推到 GitHub 上來進行版本控制。
為了與他們共同使用同一組金鑰(是我亂嘗試的一個怪方法...)過程中我將自動產生的金鑰 id_rsa 文件權限直接設定為 777。
不過 777 的權限則代表著這份文件對於所有用戶而言都是可讀可寫可執行的,甚至有許多使用 Linux 的前輩會呼籲絕對不要使用 777 賦予文件權限。
今天就連我在使用 git push
指令時,都遇到了下面這個報錯:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@adaw132547
Permissions 0777 for '/home/clay/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/clay/.ssh/id_rsa": bad permissions
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
簡單來說,就是我設定的私鑰文件權限太開放了,系統跳出了警告並阻止我繼續這樣操作。
解決方法
解決方法很單純,你可以參考 [Linux] 使用 chmod 指令改變檔案權限 來改變文件權限。
最低要求的權限其實只需要擁有者(也就是你自己)可讀即可,所以我們可以直接設定權限 400:
chmod 400 ~/.ssh/id_rsa
萬一將來有了需要編輯的需求,再使用:
chmod u+w ~/.ssh/id_rsa
來添加讀寫權限。當然,如果你要一步到位,當然可以直接把這份檔案修改成擁有者可讀寫:
chmod 600 ~/.ssh/id_rsa
順帶一提我對 Windows 系統的終端機指令不熟(慚愧...... 那也是我將來的學習目標之一),但據說只要將 chmod
改為 chgrp
就可以運作。
既然有看到,便順手紀錄在這裡。