
文章目錄1. SSH 工作原理與非對(duì)稱(chēng)加密2. SSH 基礎(chǔ)連接命令3. SSH 免密登錄配置標(biāo)準(zhǔn)四步法步驟 1在本地機(jī)器生成 SSH 密鑰對(duì)步驟 2將公鑰復(fù)制到遠(yuǎn)程服務(wù)器方法 A使用 ssh-copy-id 自動(dòng)安裝推薦最省心方法 B手動(dòng)配置若遠(yuǎn)程機(jī)器沒(méi)有 ssh-copy-id 工具步驟 3驗(yàn)證免密登錄4. 高級(jí)技巧使用 ~/.ssh/config 簡(jiǎn)化配置5. 生產(chǎn)環(huán)境 SSH 安全加固規(guī)范6. 排查免密登錄失敗常見(jiàn)權(quán)限坑點(diǎn)7. 總結(jié)SSH (Secure Shell)是 Linux 系統(tǒng)中最核心的遠(yuǎn)程管理協(xié)議。它通過(guò)非對(duì)稱(chēng)加密公鑰與私鑰技術(shù)為終端會(huì)話(huà)、文件傳輸提供安全通道。無(wú)論是日常連接服務(wù)器還是構(gòu)建 CI/CD 自動(dòng)化部署、集群拉取代碼掌握 SSH 的配置與免密登錄都是必修課。1. SSH 工作原理與非對(duì)稱(chēng)加密SSH 免密登錄基于非對(duì)稱(chēng)加密體系[ 本地客戶(hù)端 (Client) ] [ 遠(yuǎn)程服務(wù)器 (Server) ] ┌────────────────────┐ ┌────────────────────┐ │ 私鑰 (id_ed25519) │ (絕不泄露) │ │ └─────────┬──────────┘ │ ~/.ssh/ │ │ │ authorized_keys │ │ 發(fā)送連接請(qǐng)求 │ (存有客戶(hù)端公鑰) │ └───────────────────────────────│ │ └─────────┬──────────┘ │ 服務(wù)器用公鑰加密隨機(jī)質(zhì)詢(xún) │ ┌──────────────────────────────────────────┘ ▼ ┌────────────────────┐ │ 本地用私鑰解密并響應(yīng) │ └─────────┬──────────┘ │ 驗(yàn)證成功建立加密會(huì)話(huà) └─────────────────────────────── [ 登錄成功 ]私鑰 (Private Key)存放在本地電腦~/.ssh/id_ed25519絕對(duì)不能泄露。公鑰 (Public Key)存放在遠(yuǎn)程服務(wù)器~/.ssh/authorized_keys用于解密和身份校驗(yàn)。2. SSH 基礎(chǔ)連接命令最基本的連接語(yǔ)法ssh [用戶(hù)名][服務(wù)器IP或域名] -p [端口號(hào)]# 1. 默認(rèn)連接使用 22 端口sshalex192.168.1.100# 2. 連接指定端口如果服務(wù)器修改了默認(rèn) SSH 端口如 2222ssh-p2222alex192.168.1.100# 3. 指定特定私鑰文件進(jìn)行連接ssh-i~/.ssh/my_custom_key alex192.168.1.100# 4. 在遠(yuǎn)程服務(wù)器上直接執(zhí)行單條命令并返回結(jié)果無(wú)需保持交互sshalex192.168.1.100df -h3. SSH 免密登錄配置標(biāo)準(zhǔn)四步法步驟 1在本地機(jī)器生成 SSH 密鑰對(duì)打開(kāi)本地終端執(zhí)行以下命令生成密鑰對(duì)。推薦算法強(qiáng)烈建議優(yōu)先使用Ed25519算法比傳統(tǒng)的 RSA 更安全、密鑰更短且性能更好。# 優(yōu)先推薦使用 Ed25519 算法生成可加上 -C 備注郵箱或主機(jī)名ssh-keygen-ted25519-Calexexample.com# 備選如果老舊系統(tǒng)不支持 ed25519使用 4096 位的 RSAssh-keygen-trsa-b4096-Calexexample.com執(zhí)行后系統(tǒng)會(huì)提示保存路徑默認(rèn)在~/.ssh/目錄下連按三次回車(chē)即可默認(rèn)不設(shè)置私鑰密碼。步驟 2將公鑰復(fù)制到遠(yuǎn)程服務(wù)器生成密鑰后你需要將本地生成的公鑰id_ed25519.pub添加到遠(yuǎn)程服務(wù)器的~/.ssh/authorized_keys文件中。方法 A使用ssh-copy-id自動(dòng)安裝推薦最省心# 格式ssh-copy-id -p [端口] [用戶(hù)名][服務(wù)器IP]ssh-copy-id-p22alex192.168.1.100輸入一次遠(yuǎn)程用戶(hù)的密碼后系統(tǒng)會(huì)自動(dòng)幫你創(chuàng)建目錄并配置權(quán)限。方法 B手動(dòng)配置若遠(yuǎn)程機(jī)器沒(méi)有ssh-copy-id工具# 一鍵讀取本地公鑰并通過(guò)管道寫(xiě)入遠(yuǎn)程 authorized_keyscat~/.ssh/id_ed25519.pub|sshalex192.168.1.100mkdir -p ~/.ssh chmod 700 ~/.ssh cat ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys步驟 3驗(yàn)證免密登錄配置完成后再次嘗試連接系統(tǒng)將不再提示輸入密碼而是直接登錄sshalex192.168.1.1004. 高級(jí)技巧使用~/.ssh/config簡(jiǎn)化配置每次都輸入ssh alex192.168.1.100 -p 2222 -i ~/.ssh/my_key非常繁瑣。你可以在本地配置SSH 別名。創(chuàng)建并編輯本地的~/.ssh/config文件nano~/.ssh/config寫(xiě)入以下配置內(nèi)容# 定義別名如 dev-server Host dev HostName 192.168.1.100 User alex Port 2222 IdentityFile ~/.ssh/id_ed25519 # 定義公司生產(chǎn)環(huán)境服務(wù)器 Host prod HostName prod.example.com User admin Port 22 IdentityFile ~/.ssh/prod_key設(shè)置保存后下次你只需輸入極其簡(jiǎn)短的別名即可直接連接sshdev5. 生產(chǎn)環(huán)境 SSH 安全加固規(guī)范在公網(wǎng)服務(wù)器中默認(rèn)配置的 SSH 經(jīng)常會(huì)遭遇密碼爆破攻擊。強(qiáng)烈建議修改/etc/ssh/sshd_config進(jìn)行安全加固# 1. 打開(kāi)服務(wù)器上的 SSH 服務(wù)配置文件sudonano/etc/ssh/sshd_config# 2. 做出如下安全改動(dòng)Port2222# 修改默認(rèn) 22 端口避開(kāi)絕大部分通用掃描腳本PermitRootLogin no# 禁止 root 用戶(hù)直接遠(yuǎn)程登錄強(qiáng)制使用普通用戶(hù) sudo 提權(quán)PasswordAuthentication no# ?? 徹底禁用密碼登錄強(qiáng)制要求使用 SSH 密鑰登錄PubkeyAuthenticationyes# 開(kāi)啟公鑰認(rèn)證# 3. 重載 SSH 服務(wù)配置使修改生效sudosystemctl reload sshd6. 排查免密登錄失敗常見(jiàn)權(quán)限坑點(diǎn)如果你已經(jīng)配置了authorized_keys但系統(tǒng)依然要求輸入密碼90% 的原因是文件權(quán)限太開(kāi)放導(dǎo)致 SSH 處于安全機(jī)制拒絕讀取。請(qǐng)登錄遠(yuǎn)程服務(wù)器嚴(yán)格檢查并修復(fù)以下權(quán)限# 1. 用戶(hù)家目錄權(quán)限不能過(guò)大chmod750/home/alex# 2. .ssh 目錄權(quán)限必須為 700chmod700/home/alex/.ssh# 3. authorized_keys 文件權(quán)限必須為 600chmod600/home/alex/.ssh/authorized_keys# 4. 確保文件所有者是當(dāng)前用戶(hù)而非 rootchown-Ralex:alex /home/alex/.ssh終極排查參數(shù)如果還是不行在本地連接時(shí)加上-v參數(shù)如ssh -v dev查看詳細(xì)的握手日志與密鑰匹配過(guò)程。7. 總結(jié)生成算法首選ssh-keygen -t ed25519。免密部署用ssh-copy-id userip最快。高效接入配置~/.ssh/config打造極簡(jiǎn)快捷命令。安全加固禁止密碼登錄 (PasswordAuthentication no) 修改默認(rèn)端口 嚴(yán)格控制.ssh目錄權(quán)限700和600。 感謝閱讀想了解更多 我的博客網(wǎng)站 | 記錄思考分享干貨 我的個(gè)人主頁(yè) | 關(guān)于我、開(kāi)源項(xiàng)目