Linux通過(guò)密鑰認(rèn)證實(shí)現(xiàn)SSH無(wú)密碼登錄
在服務(wù)器管理中,使用 SSH 密鑰認(rèn)證可以有效提升登錄安全性。相比傳統(tǒng)的密碼認(rèn)證,密鑰認(rèn)證不僅避免了暴 力 破 解的風(fēng)險(xiǎn),同時(shí)也簡(jiǎn)化了多臺(tái)服務(wù)器間的登錄流程。本文將詳細(xì)介紹如何在 Windows 到 Linux 和 Linux 到 Linux 的場(chǎng)景中配置密鑰認(rèn)證,并在配置完成后禁用密碼登錄,從而提高系統(tǒng)安全性。
Windows 到 Linux 的密鑰登錄
生成 SSH 密鑰對(duì)(使用 Windows 自帶的 OpenSSH)
如果你使用的是 Windows 10 或更新版本,可以直接利用 OpenSSH 工具生成密鑰。在 PowerShell 中運(yùn)行以下命令:
ssh-keygen -t rsa -b 4096
接下來(lái)根據(jù)提示為私鑰添加密碼,一般情況可以直接 Enter 兩次跳過(guò),如若情況特殊可自行設(shè)置密碼
- 參數(shù)說(shuō)明:
-t rsa:指定生成 RSA 類型的密鑰(也可以選擇ed25519)。-b 4096:指定密鑰長(zhǎng)度為 4096 位,安全性更高。
生成后,會(huì)在指定目錄下生成兩個(gè)文件:
- 私鑰(
id_rsa):請(qǐng)務(wù)必妥善保管,不要泄露。 - 公鑰(
id_rsa.pub):將用于配置在 Linux 服務(wù)器上。
我是Administrator用戶

上傳公鑰到 Linux 服務(wù)器
將生成的公鑰上傳到目標(biāo) Linux 服務(wù)器??梢允褂?nbsp;scp 命令:
scp C:\Users\你的用戶名\.ssh\id_rsa.pub 用戶名@Linux服務(wù)器IP:~/
登錄到服務(wù)器后,執(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:將公鑰追加到認(rèn)證文件中。chmod 700和chmod 600:設(shè)置目錄及文件權(quán)限,防止未授權(quán)訪問(wèn)。- 最后刪除臨時(shí)上傳的公鑰文件,保證服務(wù)器整潔。
我是root用戶

禁用密碼登錄
為防止密碼被暴力破解,建議修改 SSH 配置文件,禁用密碼登錄:
sudo vim /etc/ssh/sshd_config
找到以下配置項(xiàng),修改為:
PasswordAuthentication no PubkeyAuthentication yes
PasswordAuthentication no這行指令禁用了密碼認(rèn)證。也就是說(shuō),用戶將不能使用用戶名和密碼來(lái)登錄服務(wù)器,進(jìn)一步減少暴力破解攻擊的風(fēng)險(xiǎn),從而提高安全性。
PubkeyAuthentication yes這行指令啟用了基于公鑰的認(rèn)證方式。服務(wù)器將接受客戶端使用密鑰對(duì)中私鑰所產(chǎn)生的簽名進(jìn)行身份驗(yàn)證。只有當(dāng)客戶端的公鑰出現(xiàn)在服務(wù)器用戶的
~/.ssh/authorized_keys文件中時(shí),才會(huì)允許登錄。
保存后,重啟 SSH 服務(wù):
sudo systemctl restart sshd
注意: 在禁用密碼認(rèn)證前,請(qǐng)確保已經(jīng)測(cè)試過(guò)密鑰登錄正??捎?,否則可能會(huì)導(dǎo)致遠(yuǎn)程無(wú)法訪問(wèn)!
重啟完,不要直接退出服務(wù)器,可以另開窗口測(cè)試我是xshell

現(xiàn)在讓我秘鑰,不要密碼了
測(cè)試 SSH 免密登錄
在 Windows 的 PowerShell 中執(zhí)行:
ssh -i C:\Users\你的用戶名\.ssh\id_rsa 用戶名@Linux服務(wù)器IP

如果無(wú)需輸入密碼即可登錄,說(shuō)明配置成功。同時(shí)可以在 Windows 端配置 ~/.ssh/config 文件,以簡(jiǎn)化連接過(guò)程:
Host myserver
HostName Linux服務(wù)器IP
User 用戶名
IdentityFile C:\Users\你的用戶名\.ssh\id_rsa
以后只需執(zhí)行 ssh myserver 即可連接。
Linux 到 Linux 的密鑰登錄
在多臺(tái) Linux 服務(wù)器之間,使用 SSH 密鑰認(rèn)證同樣適用。下面介紹如何在 Linux 環(huán)境下生成密鑰、傳輸公鑰以及配置無(wú)密碼登錄。
在源服務(wù)器生成密鑰對(duì)
在終端中執(zhí)行:
ssh-keygen -t rsa -b 4096
同樣會(huì)生成:
- 私鑰:
~/.ssh/id_rsa - 公鑰:
~/.ssh/id_rsa.pub
將公鑰復(fù)制到目標(biāo)服務(wù)器
可以使用 ssh-copy-id 命令將公鑰自動(dòng)添加到目標(biāo)服務(wù)器的 authorized_keys 文件中:
ssh-copy-id 用戶名@目標(biāo)服務(wù)器IP
執(zhí)行后會(huì)要求輸入目標(biāo)服務(wù)器的密碼,輸入后命令會(huì)自動(dòng)將公鑰添加到 ~/.ssh/authorized_keys 文件中,并設(shè)置合適的權(quán)限。
如果 ssh-copy-id 命令不可用,也可以手動(dòng)復(fù)制:
scp ~/.ssh/id_rsa.pub 用戶名@目標(biāo)服務(wù)器IP:~/
登錄目標(biāo)服務(wù)器后:
mkdir -p ~/.ssh cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys rm ~/id_rsa.pub
測(cè)試密鑰登錄
在源服務(wù)器上測(cè)試 SSH 登錄:
ssh 用戶名@目標(biāo)服務(wù)器IP
如果無(wú)需輸入密碼即可登錄,則說(shuō)明密鑰認(rèn)證配置成功。
禁用密碼登錄(目標(biāo)服務(wù)器)
和 Windows 到 Linux 的步驟類似,在目標(biāo)服務(wù)器上編輯 SSH 配置:
sudo vim /etc/ssh/sshd_config
將以下配置項(xiàng)修改為:
PasswordAuthentication no PubkeyAuthentication yes
保存后重啟 SSH 服務(wù):
sudo systemctl restart sshd
其他安全優(yōu)化及常見(jiàn)問(wèn)題
禁止 root 遠(yuǎn)程登錄
為了進(jìn)一步提升安全性,建議禁用 root 用戶的 SSH 遠(yuǎn)程登錄。在 /etc/ssh/sshd_config 中找到:
PermitRootLogin yes
修改為:
PermitRootLogin no
然后重啟 SSH 服務(wù)。
配置防火墻和 Fail2ban
- 防火墻設(shè)置: 確保只開放必要的端口(通常是 22 端口),并限制部分 IP 訪問(wèn)。
- Fail2ban: 安裝并配置 Fail2ban,可自動(dòng)封禁多次嘗試登錄失敗的 IP 地址,有效防止暴力破解。
常見(jiàn)問(wèn)題及解決方案
- 權(quán)限問(wèn)題: 如果 SSH 登錄時(shí)報(bào)錯(cuò)“Bad permissions”,請(qǐng)檢查
~/.ssh目錄和authorized_keys文件的權(quán)限設(shè)置是否正確。 - 密鑰格式問(wèn)題: 生成密鑰時(shí)若使用了 Passphrase,確保在連接時(shí)正確輸入,否則可以重新生成不含 Passphrase 的密鑰。
- 連接超時(shí): 檢查服務(wù)器的防火墻設(shè)置是否允許 SSH 連接,以及網(wǎng)絡(luò)是否正常。
總結(jié)
通過(guò) SSH 密鑰認(rèn)證實(shí)現(xiàn)無(wú)密碼登錄不僅提升了遠(yuǎn)程管理的便利性,更大幅降低了密碼泄露和暴力破解的風(fēng)險(xiǎn)。無(wú)論是 Windows 到 Linux 還是 Linux 到 Linux 的場(chǎng)景中,都可以按照以下步驟完成配置:
- 生成密鑰對(duì): 在客戶端生成公鑰和私鑰。
- 上傳公鑰: 將公鑰添加到目標(biāo)服務(wù)器的
authorized_keys文件中,并設(shè)置正確的權(quán)限。 - 禁用密碼登錄: 修改 SSH 配置文件,禁用密碼認(rèn)證,重啟 SSH 服務(wù)。
- 安全加固: 禁止 root 登錄、配置防火墻和 Fail2ban 等措施。
希望本文能幫助大家構(gòu)建更安全、高效的服務(wù)器管理環(huán)境。通過(guò)以上配置,你將能更輕松地管理多臺(tái)服務(wù)器,并有效防止未經(jīng)授權(quán)的訪問(wèn)。
到此這篇關(guān)于Linux通過(guò)密鑰認(rèn)證實(shí)現(xiàn)SSH無(wú)密碼登錄的文章就介紹到這了,更多相關(guān)SSH 無(wú)密碼登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Linux系統(tǒng)配置nginx的負(fù)載均衡
這篇文章主要介紹了詳解Linux系統(tǒng)配置nginx的負(fù)載均衡的相關(guān)資料,這里對(duì)負(fù)載均衡的幾種方式進(jìn)行了講解并附NGINX配置文件,需要的朋友可以參考下2017-03-03
安全檢測(cè)Unix和Linux服務(wù)器安全設(shè)置入門精講
盡管為服務(wù)器設(shè)計(jì)軟件的軟件工程師們想方設(shè)法提高系統(tǒng)的安全性,然而由于系統(tǒng)管理員的水平參差不齊或安全意識(shí)底下,往往給黑客提供了入侵的機(jī)會(huì)。2008-05-05
Linux inotify實(shí)時(shí)備份實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Linux inotify實(shí)時(shí)備份實(shí)現(xiàn)方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
LAMP服務(wù)器性能優(yōu)化技巧之Apache服務(wù)器優(yōu)化
目前LAMP (Linux + Apache + MySQL + PHP) 近幾年來(lái)發(fā)展迅速,已經(jīng)成為Web 服務(wù)器的事實(shí)標(biāo)準(zhǔn)。本文我們將介紹基于LAMP組合的服務(wù)器的性能優(yōu)化技巧2012-02-02
使用VMware 15 安裝虛擬機(jī)和使用CentOS 8的步驟詳解
這篇文章主要介紹了使用VMware 15 安裝虛擬機(jī)和使用CentOS 8的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
淺析一下Linux上對(duì)函數(shù)進(jìn)行hook的兩種方式
這篇文章主要來(lái)和大家聊一聊如何在 Linux 上對(duì)函數(shù)進(jìn)行hook,這里介紹兩種方式,輕量級(jí)的 LD_PRELOAD 攔截和funchook 攔截,有需要的小伙伴可以了解下2025-06-06

