Linux SSH 伺服器改為金鑰登入設定

如果你的 Linux 伺服器公開在網際網路上,而且有開啟 SSH 登入的服務,這樣的情況一般都會建議使用公開金鑰認證的登入方式取代一般的密碼,這樣可以讓伺服器更安全也更方便。
而且能防止那些胡亂猜密碼的人入侵破壞伺服器。

本篇文章講解如何禁止root帳戶密碼登入
改為只能使用金鑰登入遠端伺服器的root帳戶
而非root帳戶的其他用戶仍然可用密碼登入

先用軟體工具產生公鑰與私鑰:
下載PuTTYgen
https://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
打開然後按下圖操作


公鑰建議儲存成txt純文字格式
私鑰則非常的重要 一定要放在安全的地方 不可洩漏

設定PuTTY用戶端:

然後按一般方式登入遠端伺服器

設定SSH伺服器端:
*須以root帳戶身份執行

mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh

編輯檔案

nano ~/.ssh/authorized_keys

把公鑰的內容放進去然後存檔

改變檔案權限 增加安全性

chmod 600 ~/.ssh/authorized_keys

然後測試是否能成功使用金鑰方式登入遠端伺服器
如果成功了則進行關閉root密碼方式驗證:

修改SSH Server設定
vi /etc/ssh/sshd_config

找到相關字串移除註釋並改變為以下內容 如果沒有則新增

PasswordAuthentication yes
PermitRootLogin without-password
PubkeyAuthentication yes

然後重新啟動SSH Server讓設定生效

登出伺服器 用密碼登入測試 出現失敗則表示設定成功
再用金鑰登入伺服器 如果成功則表示本篇文章設定完成