Linux多臺(tái)服務(wù)器之間免密登錄的實(shí)現(xiàn)步驟
引言
在日常的后端開發(fā)和運(yùn)維工作中,我們經(jīng)常需要頻繁登錄不同的服務(wù)器進(jìn)行部署、排查問題或上傳文件。傳統(tǒng)的基于用戶名和密碼的登錄方式既不安全又不高效。為此,我們可以利用 SSH 公鑰認(rèn)證的方式,實(shí)現(xiàn)無密碼(免密)登錄遠(yuǎn)程服務(wù)器,提升安全性與操作效率。
本文將一步步帶你完成 SSH 公鑰創(chuàng)建及遠(yuǎn)程服務(wù)器配置,實(shí)現(xiàn) SSH 免密登錄機(jī)群。
SSH 公鑰認(rèn)證簡(jiǎn)介
SSH(Secure Shell)支持多種認(rèn)證方式,其中公鑰認(rèn)證使用非對(duì)稱加密(如 RSA、ECDSA、ED25519)機(jī)制,客戶端通過私鑰發(fā)起認(rèn)證請(qǐng)求,遠(yuǎn)程服務(wù)器用已保存的公鑰進(jìn)行驗(yàn)證。它的優(yōu)勢(shì)為:
- 更高的安全性:避免密碼泄露或暴力 破解
- 更好的自動(dòng)化支持:適用于腳本、CI/CD 流程中免交互登錄
- 更高效的運(yùn)維體驗(yàn):無需每次連接服務(wù)器都輸入密碼
生成 SSH 密鑰對(duì)
打開終端,輸入以下命令即可:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
參數(shù)說明:
- -t rsa:指定密鑰類型為 RSA;
- -b 4096:密鑰長(zhǎng)度,建議使用 4096 位,增強(qiáng)安全性;
- -C:用于加一個(gè)標(biāo)識(shí)注釋,通常填寫你的郵箱或用途說明。
執(zhí)行后會(huì)提示:
Enter file in which to save the key (/home/youruser/.ssh/id_rsa):
你可以直接回車,默認(rèn)保存在 ~/.ssh/id_rsa(私鑰)和 ~/.ssh/id_rsa.pub(公鑰)文件中。
接下來是:
Enter passphrase (empty for no passphrase): Enter same passphrase again:
為了增強(qiáng)安全性,建議設(shè)置私鑰密碼。如果是腳本或自動(dòng)化環(huán)境中使用,可空密碼,但需慎重評(píng)估風(fēng)險(xiǎn)。
將公鑰添加到遠(yuǎn)程主機(jī)(server)
使用 ssh-copy-id 命令輕松將本地公鑰寫入遠(yuǎn)程服務(wù)器的 ~/.ssh/authorized_keys 文件中。
格式如下:
ssh-copy-id -i ~/.ssh/id_rsa.pub 用戶名@服務(wù)器IP
示例:
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@192.168.0.1
系統(tǒng)會(huì)提示輸入該服務(wù)器的登錄密碼,認(rèn)證成功后即可完成綁定。
如果該命令提示找不到 ssh-copy-id,可使用以下命令手動(dòng)復(fù)制:
cat ~/.ssh/id_rsa.pub | ssh 用戶名@遠(yuǎn)程IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
測(cè)試是否免密登錄成功
公鑰拷貝完成后,使用 ssh 命令連接遠(yuǎn)程服務(wù)器:
ssh hadoop@192.168.0.1
如無意外,將直接登錄進(jìn)入遠(yuǎn)程主機(jī),不再需要輸入密碼,即可完成免密登錄驗(yàn)證。
適用于多個(gè)目標(biāo)主機(jī)(批量推送)
如果你需要將公鑰推送至多臺(tái)服務(wù)器,比如用于機(jī)器學(xué)習(xí)分布式訓(xùn)練、Hadoop/Spark 集群部署,可使用 shell 腳本進(jìn)行批量操作。例如:
#!/bin/bash USER="hadoop" HOSTS=("192.168.0.1" "192.168.0.2" "192.168.0.3") for HOST in "${HOSTS[@]}"; do echo "Copying SSH key to $USER@$HOST" ssh-copy-id -i ~/.ssh/id_rsa.pub "$USER@$HOST" done
根據(jù)實(shí)際配置調(diào)整用戶名或主機(jī)列表。
安全建議
私鑰文件建議設(shè)置為 600 權(quán)限,僅允許用戶本人讀寫:
chmod 600 ~/.ssh/id_rsa
禁止將私鑰隨意上傳到遠(yuǎn)程服務(wù)器,或在代碼倉(cāng)庫(kù)存儲(chǔ)私鑰;
為私鑰加密短語(passphrase),在安全與自動(dòng)化之間尋求平衡;
若同一機(jī)器需連接多個(gè)遠(yuǎn)端主機(jī),可以為每個(gè)主機(jī)使用配置文件(~/.ssh/config)統(tǒng)一管理多個(gè)密鑰與主機(jī)別名,提高可維護(hù)性。
示例 ~/.ssh/config:
Host server1 HostName 192.168.0.1 User hadoop IdentityFile ~/.ssh/id_rsa Host server2 HostName 192.168.0.2 User hadoop IdentityFile ~/.ssh/id_rsa
使用時(shí)無需填寫完整命令:
ssh server1
小結(jié)
通過以上步驟,你就可以輕松地為自己的開發(fā)、部署流程實(shí)現(xiàn)高效的免密登錄。無論是單機(jī)還是集群環(huán)境,該技巧都能極大地提升工作效率并加強(qiáng)安全性。建議將這項(xiàng)操作作為開發(fā)者或運(yùn)維人員的必備基礎(chǔ)技能。
如果你想在 CI/CD、Git 提交或遠(yuǎn)程 API 自動(dòng)化中實(shí)現(xiàn)安全連接,也可以基于 SSH 做更深入的免密自動(dòng)化處理。
以上就是Linux多臺(tái)服務(wù)器之間免密登錄的實(shí)現(xiàn)步驟的詳細(xì)內(nèi)容,更多關(guān)于Linux服務(wù)器間免密登錄的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
linux中設(shè)置nexus開機(jī)自啟動(dòng)的方法
這篇文章主要介紹了linux中設(shè)置nexus開機(jī)自啟動(dòng)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02詳解CentOS8更換yum源后出現(xiàn)同步倉(cāng)庫(kù)緩存失敗的問題
這篇文章主要介紹了詳解CentOS8更換yum源后出現(xiàn)同步倉(cāng)庫(kù)緩存失敗的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Linux學(xué)習(xí)第一天——ssh登錄和軟件安裝詳解
這篇文章主要介紹了Linux學(xué)習(xí)第一天——ssh登錄和軟件安裝詳解 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12Linux文件服務(wù)器實(shí)戰(zhàn)詳解(虛擬用戶)
這篇文章主要介紹了Linux文件服務(wù)器實(shí)戰(zhàn)詳解(虛擬用戶) ,需要的朋友可以參考下2018-06-06Apache中使非偽靜態(tài)url跳轉(zhuǎn)到偽靜態(tài)url的方法
這篇文章主要介紹了Apache中使非偽靜態(tài)url跳轉(zhuǎn)到偽靜態(tài)url的方法,主要是在使用.htaccess時(shí)的問題,需要的朋友可以參考下2015-07-07centos 7中firewall防火墻的常用命令總結(jié)
大家都知道centos 7中防火墻是一個(gè)非常的強(qiáng)大的功能了,但對(duì)于centos 7中在防火墻中進(jìn)行了升級(jí)了,下面這篇文章主要介紹了centos 7中firewall防火墻的常用命令,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03Linux下Oracle如何導(dǎo)入導(dǎo)出dmp文件詳解
這篇文章主要給大家介紹了關(guān)于在Linux下Oracle如何導(dǎo)入導(dǎo)出dmp文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-07-07