[CyberPanel]採用SSH金鑰認證登入主機
關於採用SSH金鑰登入主機的文章,在網路上搜尋可以找到一大把;但實際在操作應用時,卻是遇到總總困難…
但也經過這樣的洗禮後,似乎也達成本來預計的樣子,在這篇文章將會講解這一路來的心路歷程(我使用的是CentOS8系統)
首先這邊先提到我這裡的目標是什麼
開其他帳號用SSH金鑰認證登入主機不用再輸入密碼,並把root帳號關閉
※雖然這裡有提到CyberPanel,但僅限於一小部分,其他大部分都用指令完成
要完成上述目標的話將分成幾個部分
- 完成SSH金鑰認證登入主機不用輸入密碼,並把root帳號關閉
- 下載PuTTY並安裝之
- 建立新的使用者帳戶,並使其擁有root權限
- 建立.ssh資料夾並產生公私鑰
- 在CyberPanel加入公鑰
- 嘗試用SSH金鑰登入
Step 01:下載PuTTY並安裝之
到https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html後,選擇64-bit x86版本;個人建議使用安裝版本,因為有包含PuTTYgen,這東西是產生公私鑰,後面會使用到
Step 02:建立新的使用者帳戶,並使其擁有root權限
這邊相當麻煩,但可以按照下面步驟做,首先第一步先從root帳號登入,關於用PuTTY登入方式由於網路教學相當多,故就不多描述
步驟1. 輸入指令”adduser 希望加入的使用者名稱“(後面的帳號皆以user為例)
adduser user
這裡是我想加入一個名稱為「user」的帳號
步驟2. 輸入更改user帳號的密碼指令
passwd user
※輸入像是12345678這種密碼的話會被說密碼太簡單了(但還是會讓你改)。如果你是用比較長串的密碼,建議使用密碼管理軟體方便記憶,記得要連續輸入兩次密碼(密碼不會顯示出來,所以等於盲打,故要小心輸入)
另外PuTTY沒辦法像是Windows直接用複製貼上的方式來使用,但有其他方式來做類似動作。Windows可以複製文字(或是密碼)後,在PuTTY的視窗中按一下滑鼠右鍵就貼上內容了;而也可以直接在PuTTY視窗中使用Windows的Ctrl+C的方式複製內容(可以先用滑鼠選擇範圍後再按Ctrl+C的快捷鍵),然後在Windows系統其他地方按Ctrl+V方式貼上
步驟3. 更改user的權限為root權限
如果無法編輯/etc/sudoers的話建議使用下面的指令:
方案一:輸入下面指令,這樣的話就可以編輯/etc/sudoers
chmod 777 /etc/sudoers
輸入編輯/etc/sudoers的指令
vi /etc/sudoers
這時候就會跳出一堆東西,我們找有下面這樣內容
##Allow root to run any commands anywhere root ALL=(ALL) ALL
這時候按下鍵盤的<kbd>A鍵</kbd>後才可以開始編輯,並在root ALL=(ALL) ALL下方加入user ALL=(ALL) ALL後,按下鍵盤的<kbd>ESC鍵</kbd>跳出編輯,最後依序輸入:wq做儲存(這邊真的很夭壽,大部分資料只不會寫怎麼編輯,連怎麼跳出編輯都不會描述,通常只有寫到:wq做保存而已)
##Allow root to run any commands anywhere root ALL=(ALL) ALL user ALL=(ALL) ALL
最後記得輸入下面指令讓/etc/sudoers的存取權限回復(不讓其他人亂來)
chmod 440 /etc/sudoers
參考資料:
方案二:輸入下面指令。主要因為可能大部分VPS所提供的Linux都會以SELinux(安全增強型Linux)為主
restorecon -R -v /home
參考資料為:
雖然可以參考linux下添加用戶並賦予root權限這一篇,但是個人認為開啟的第三點方式有些問題,主要這個帳號會變成root,一旦root帳號被關閉的時候也無法登入
步驟4. 登出現有帳號
現階段已經設定一個段落,我們先登出root帳號,使用下面指令後,PuTTY會自動結束
logout
Step 03:建立.ssh資料夾並產生公私鑰
我們再度開啟PuTTY後登入剛剛新增加的帳號(user)後就先輸入下面指令
cd ~/
這個指令是回到這個帳號的最上層home目錄,我們接下來要建立.ssh的資料夾後並產生authorized_keys檔案,所以輸入下面指令(請一行一行分別輸入)
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
接著我們進入.ssh的資料夾內,並在這個資料夾內產生金鑰(同樣一行一行分別輸入)
cd ~/.ssh ssh-keygen
然後我們來看目前資料夾裡面有什麼東西,輸入指令
ls
基本上我們會看到會有authorized_keys、id_rsa、id_rsa.pub這三個檔案
接著我們來編輯authorized_keys這個檔案,指令如同之前所述
vi authorized_keys
然後一樣按下<kbd>A鍵</kbd>開始作編輯,接下來我們需要開啟PuTTYgen程式,產生金鑰方式就不多說,因為網路不少教學,我這邊就盡快入主題
首先把公鑰內容複製出來,再把公鑰內容貼上(按滑鼠右鍵)後,再依據下面步驟關閉
按<kbd>ESC鍵</kbd>
輸入:wq後儲存
接著輸入下面指令(同樣一行一行分別輸入)
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chown $USER:$USER ~/.ssh -R
接著來編輯/etc/ssh/sshd_config這個檔案,一樣輸入下面指令(這個要的權限似乎比較高,所以加入sudo指令)
sudo vi /etc/ssh/sshd_config
然後馬上要輸入user的密碼,接下來要尋找”AuthorizedKeysFile .ssh/authorized_keys”這一行
主要把前面的#(註記符號)刪掉,不過我個人在編輯這檔案時似乎就已經被刪掉,如果沒有要更動檔案的話,輸入:q即可(代表不更改任何東西退出)
最後輸入下面指令使SSHD重新啟動
sudo systemctl restart sshd
接著他會要你輸入user的密碼,需要盡快輸入否則就又得重新來過
同樣的我們再次用logout指令登出user帳號關閉PuTTY
參考資料:
PuTTY Server Refused Our Key | How to Troubleshoot (Step-by-step Guide)
Failed to restart ssh.service: Unit not found.
解決 SSH 連線 “Server Refused Our Key”的方法 (使用 Putty)
Step 04:在CyberPanel加入公鑰
我們進入CyberPanel介面後,依序首頁儀表版SECURITY→SECURE SSH進入
選擇SSH Keys分頁
選擇Add Key後把公鑰內容貼進去後儲存
Step 05:嘗試用SSH金鑰登入
最後用剛剛創建出來的user帳號來測試,不用輸入密碼就代表成功了!