rucifa

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

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

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

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

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

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

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

  • 完成SSH金鑰認證登入主機不用輸入密碼,並把root帳號關閉
    1. 下載PuTTY並安裝之
    2. 建立新的使用者帳戶,並使其擁有root權限
    3. 建立.ssh資料夾並產生公私鑰
    4. 在CyberPanel加入公鑰
    5. 嘗試用SSH金鑰登入

Step 01:下載PuTTY並安裝之

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

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

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

首先登入root帳號

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

adduser user

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

增加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
加入user ALL=(ALL) ALL到/etc/sudoers裡

這時候按下鍵盤的<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

參考資料:

为用户增加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的資料夾內,並在這個資料夾內產生金鑰(同樣一行一行分別輸入)

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

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

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帳號來測試,不用輸入密碼就代表成功了!

原文連結Cyrians ~Make something different ~

Like my work??
Don't forget to support or like, so I know you are with me..

CC BY-NC-ND 2.0

Want to read more ?

Login with one click and join the most diverse creator community.