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