Linux通過密鑰認證實現(xiàn)SSH無密碼登錄
在服務器管理中,使用 SSH 密鑰認證可以有效提升登錄安全性。相比傳統(tǒng)的密碼認證,密鑰認證不僅避免了暴 力 破 解的風險,同時也簡化了多臺服務器間的登錄流程。本文將詳細介紹如何在 Windows 到 Linux 和 Linux 到 Linux 的場景中配置密鑰認證,并在配置完成后禁用密碼登錄,從而提高系統(tǒng)安全性。
Windows 到 Linux 的密鑰登錄
生成 SSH 密鑰對(使用 Windows 自帶的 OpenSSH)
如果你使用的是 Windows 10 或更新版本,可以直接利用 OpenSSH 工具生成密鑰。在 PowerShell 中運行以下命令:
ssh-keygen -t rsa -b 4096
接下來根據提示為私鑰添加密碼,一般情況可以直接 Enter 兩次跳過,如若情況特殊可自行設置密碼
- 參數(shù)說明:
-t rsa
:指定生成 RSA 類型的密鑰(也可以選擇ed25519
)。-b 4096
:指定密鑰長度為 4096 位,安全性更高。
生成后,會在指定目錄下生成兩個文件:
- 私鑰(
id_rsa
):請務必妥善保管,不要泄露。 - 公鑰(
id_rsa.pub
):將用于配置在 Linux 服務器上。
我是Administrator用戶
上傳公鑰到 Linux 服務器
將生成的公鑰上傳到目標 Linux 服務器??梢允褂?nbsp;scp
命令:
scp C:\Users\你的用戶名\.ssh\id_rsa.pub 用戶名@Linux服務器IP:~/
登錄到服務器后,執(zhí)行以下命令配置公鑰:linux上操作的
mkdir -p ~/.ssh cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys rm ~/id_rsa.pub
解釋:
mkdir -p ~/.ssh
:創(chuàng)建 SSH 目錄(如果不存在)。cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
:將公鑰追加到認證文件中。chmod 700
和chmod 600
:設置目錄及文件權限,防止未授權訪問。- 最后刪除臨時上傳的公鑰文件,保證服務器整潔。
我是root用戶
禁用密碼登錄
為防止密碼被暴力破解,建議修改 SSH 配置文件,禁用密碼登錄:
sudo vim /etc/ssh/sshd_config
找到以下配置項,修改為:
PasswordAuthentication no PubkeyAuthentication yes
PasswordAuthentication no這行指令禁用了密碼認證。也就是說,用戶將不能使用用戶名和密碼來登錄服務器,進一步減少暴力破解攻擊的風險,從而提高安全性。
PubkeyAuthentication yes這行指令啟用了基于公鑰的認證方式。服務器將接受客戶端使用密鑰對中私鑰所產生的簽名進行身份驗證。只有當客戶端的公鑰出現(xiàn)在服務器用戶的
~/.ssh/authorized_keys
文件中時,才會允許登錄。
保存后,重啟 SSH 服務:
sudo systemctl restart sshd
注意: 在禁用密碼認證前,請確保已經測試過密鑰登錄正??捎?,否則可能會導致遠程無法訪問!
重啟完,不要直接退出服務器,可以另開窗口測試
我是xshell
現(xiàn)在讓我秘鑰,不要密碼了
測試 SSH 免密登錄
在 Windows 的 PowerShell 中執(zhí)行:
ssh -i C:\Users\你的用戶名\.ssh\id_rsa 用戶名@Linux服務器IP
如果無需輸入密碼即可登錄,說明配置成功。同時可以在 Windows 端配置 ~/.ssh/config
文件,以簡化連接過程:
Host myserver HostName Linux服務器IP User 用戶名 IdentityFile C:\Users\你的用戶名\.ssh\id_rsa
以后只需執(zhí)行 ssh myserver
即可連接。
Linux 到 Linux 的密鑰登錄
在多臺 Linux 服務器之間,使用 SSH 密鑰認證同樣適用。下面介紹如何在 Linux 環(huán)境下生成密鑰、傳輸公鑰以及配置無密碼登錄。
在源服務器生成密鑰對
在終端中執(zhí)行:
ssh-keygen -t rsa -b 4096
同樣會生成:
- 私鑰:
~/.ssh/id_rsa
- 公鑰:
~/.ssh/id_rsa.pub
將公鑰復制到目標服務器
可以使用 ssh-copy-id
命令將公鑰自動添加到目標服務器的 authorized_keys
文件中:
ssh-copy-id 用戶名@目標服務器IP
執(zhí)行后會要求輸入目標服務器的密碼,輸入后命令會自動將公鑰添加到 ~/.ssh/authorized_keys
文件中,并設置合適的權限。
如果 ssh-copy-id
命令不可用,也可以手動復制:
scp ~/.ssh/id_rsa.pub 用戶名@目標服務器IP:~/
登錄目標服務器后:
mkdir -p ~/.ssh cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys rm ~/id_rsa.pub
測試密鑰登錄
在源服務器上測試 SSH 登錄:
ssh 用戶名@目標服務器IP
如果無需輸入密碼即可登錄,則說明密鑰認證配置成功。
禁用密碼登錄(目標服務器)
和 Windows 到 Linux 的步驟類似,在目標服務器上編輯 SSH 配置:
sudo vim /etc/ssh/sshd_config
將以下配置項修改為:
PasswordAuthentication no PubkeyAuthentication yes
保存后重啟 SSH 服務:
sudo systemctl restart sshd
其他安全優(yōu)化及常見問題
禁止 root 遠程登錄
為了進一步提升安全性,建議禁用 root 用戶的 SSH 遠程登錄。在 /etc/ssh/sshd_config
中找到:
PermitRootLogin yes
修改為:
PermitRootLogin no
然后重啟 SSH 服務。
配置防火墻和 Fail2ban
- 防火墻設置: 確保只開放必要的端口(通常是 22 端口),并限制部分 IP 訪問。
- Fail2ban: 安裝并配置 Fail2ban,可自動封禁多次嘗試登錄失敗的 IP 地址,有效防止暴力破解。
常見問題及解決方案
- 權限問題: 如果 SSH 登錄時報錯“Bad permissions”,請檢查
~/.ssh
目錄和authorized_keys
文件的權限設置是否正確。 - 密鑰格式問題: 生成密鑰時若使用了 Passphrase,確保在連接時正確輸入,否則可以重新生成不含 Passphrase 的密鑰。
- 連接超時: 檢查服務器的防火墻設置是否允許 SSH 連接,以及網絡是否正常。
總結
通過 SSH 密鑰認證實現(xiàn)無密碼登錄不僅提升了遠程管理的便利性,更大幅降低了密碼泄露和暴力破解的風險。無論是 Windows 到 Linux 還是 Linux 到 Linux 的場景中,都可以按照以下步驟完成配置:
- 生成密鑰對: 在客戶端生成公鑰和私鑰。
- 上傳公鑰: 將公鑰添加到目標服務器的
authorized_keys
文件中,并設置正確的權限。 - 禁用密碼登錄: 修改 SSH 配置文件,禁用密碼認證,重啟 SSH 服務。
- 安全加固: 禁止 root 登錄、配置防火墻和 Fail2ban 等措施。
希望本文能幫助大家構建更安全、高效的服務器管理環(huán)境。通過以上配置,你將能更輕松地管理多臺服務器,并有效防止未經授權的訪問。
到此這篇關于Linux通過密鑰認證實現(xiàn)SSH無密碼登錄的文章就介紹到這了,更多相關SSH 無密碼登錄內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在CentOS 6 中安裝 WordPress(二)安裝WordPress
上篇文章我們介紹了WordPress環(huán)境的配置,本文我們就來詳細講解下WordPress的安裝,適合新手,高手們請勿拍磚2014-06-06