[CyberPanel]採用SSH金鑰認證登入主機

關於採用SSH金鑰登入主機的文章,在網路上搜尋可以找到一大把;但實際在操作應用時,卻是遇到總總困難…

但也經過這樣的洗禮後,似乎也達成本來預計的樣子,在這篇文章將會講解這一路來的心路歷程(我使用的是CentOS系統)

首先這邊先提到我這裡的目標是什麼

開其他帳號用SSH金鑰認證登入主機不用再輸入密碼,並把root帳號關閉

※雖然這裡有提到CyberPanel,但僅限於一小部分,其他大部分都用指令完成

要完成上述目標的話將分成幾個部分

Step 01:下載PuTTY並安裝之

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html後,選擇64-bit x86版本;個人建議使用安裝版本,因為有包含PuTTYgen,這東西是產生公私鑰,後面會使用到

Step 02:建立新的使用者帳戶,並使其擁有root權限

這邊相當麻煩,但可以按照下面步驟做,首先第一步先從root帳號登入,關於用PuTTY登入方式由於網路教學相當多,故就不多描述

首先登入root帳號
首先登入root帳號

步驟1. 輸入指令”adduser 希望加入的使用者名稱“(後面的帳號皆以user為例)

adduser user

這裡是我想加入一個名稱為「user」的帳號

增加user帳號,更改user帳號密碼
增加user帳號,更改user帳號密碼

步驟2. 輸入更改user帳號的密碼指令

passwd user

※輸入像是12345678這種密碼的話會被說密碼太簡單了(但還是會讓你改)。如果你是用比較長串的密碼,建議使用密碼管理軟體方便記憶,記得要連續輸入兩次密碼(密碼不會顯示出來,所以等於盲打,故要小心輸入)

另外PuTTY沒辦法像是Windows直接用複製貼上的方式來使用,但有其他方式來做類似動作。Windows可以複製文字(或是密碼)後,在PuTTY的視窗中按一下滑鼠右鍵就貼上內容了;而也可以直接在PuTTY視窗中先用滑鼠選擇範圍後再按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
加入user ALL=(ALL) ALL到/etc/sudoers裡
加入user ALL=(ALL) ALL到/etc/sudoers裡

這時候按下鍵盤的A鍵後才可以開始編輯,並在root ALL=(ALL) ALL下方加入user ALL=(ALL) ALL後,按下鍵盤的ESC鍵跳出編輯,最後依序輸入:wq做儲存(這邊真的很夭壽,大部分資料不但不會寫怎麼編輯,連怎麼跳出原來編輯都不會描述,通常只有寫輸入:wq做保存而已)

##Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
user    ALL=(ALL)       ALL

最後記得輸入下面指令讓/etc/sudoers的存取權限回復(不讓其他人亂來)

chmod 440 /etc/sudoers

參考資料:

为用户增加sudo权限(修改sudoers文件)

方案二:輸入下面指令。主要因為可能大部分VPS所提供的Linux都會以SELinux(安全增強型Linux)為主

restorecon -R -v /home

參考資料為:

Putty server refused our key的三种原因和解决方法

ssh私钥登陆提示Server refused our key问的解决办法

雖然可以參考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的資料夾後並產生authorized_keys檔案
建立.ssh的資料夾後並產生authorized_keys檔案

接著我們進入.ssh的資料夾內,並在這個資料夾內產生金鑰(同樣一行一行分別輸入)

cd ~/.ssh
ssh-keygen
在.SSH資料夾內產生金鑰
在.SSH資料夾內產生金鑰

然後我們來看目前資料夾裡面有什麼東西,輸入指令

ls

基本上我們會看到會有authorized_keys、id_rsa、id_rsa.pub這三個檔案

接著我們來編輯authorized_keys這個檔案,指令如同之前所述

vi authorized_keys

然後一樣按下A鍵開始作編輯,接下來我們需要開啟PuTTYgen程式,產生金鑰方式就不多說,因為網路不少教學,我這邊就盡快入主題

公鑰內容
公鑰內容

首先把公鑰內容複製出來,再把公鑰內容貼上(按滑鼠右鍵)後,再依據下面步驟關閉

ESC鍵
輸入: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進入

一開始的面板從「SECURITY」項目進入
一開始的面板從「SECURITY」項目進入
選擇「SECURE SSH」選項
選擇「SECURE SSH」選項
選擇「SSH Keys」分頁
選擇「SSH Keys」分頁

選擇SSH Keys分頁

按下「Add Key」按鈕
按下「Add Key」按鈕
選擇Add Key後把公鑰內容貼進去後按下「Save」按鈕儲存
選擇Add Key後把公鑰內容貼進去後按下「Save」按鈕儲存

Step 05:嘗試用SSH金鑰登入

最後用剛剛創建出來的user帳號來測試,不用輸入密碼就代表成功了!
最後用剛剛創建出來的user帳號來測試,不用輸入密碼就代表成功了!

Step 06:將root帳戶不允許登入

進入CyberPanel後,同樣依序首頁儀表版SECURITY→SECURE SSH進入

「Permit Root Login」這邊按下Enabled
「Permit Root Login」這邊按下Enabled
顯示已設定完成
顯示已設定完成
以root帳號嘗試登入,無法使用該金鑰也無法用密碼登入
以root帳號嘗試登入,無法使用該金鑰也無法用密碼登入

以上為[CyberPanel]採用SSH金鑰認證登入主機,希望能夠幫助你!

如果這篇文章有幫助到您,請幫我點擊拍手按鈕 5 下鼓勵我
只要花 30 秒登入 FB 或 Google,不用花任何錢就能支持我
您的支持將會是我創作的最大動力!
Cyrians
Cyrians

一名邁入不惑之年的大叔。
曾經幻想過自己是遊戲中主角,不過隨著年齡以及經歷,已經脫離幻想的年代。(但還是希望能夠有時間繼續耍廢)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *