當(dāng)前位置:首頁 > 嵌入式 > 嵌入式新聞
[導(dǎo)讀]SSH是一種服務(wù)器登錄工具,它允許通過密碼登錄和通過密鑰登錄。 但是,SSH的第三種登錄方法是證書登錄。 在許多情況下,這是一種更智能,更安全的連接方法。 本文討論此連接方法。

SSH是一種服務(wù)器登錄工具,它允許通過密碼登錄和通過密鑰登錄。 但是,SSH的第三種登錄方法是證書登錄。 在許多情況下,這是一種更智能,更安全的連接方法。 本文討論此連接方法。

一、非證書登錄的缺點(diǎn)密碼登錄和密鑰登錄,都有各自的缺點(diǎn)。密碼登錄需要輸入服務(wù)器密碼,這非常麻煩,也不安全,存在被暴力破解的風(fēng)險(xiǎn)。密鑰登錄需要服務(wù)器保存用戶的公鑰,也需要用戶保存服務(wù)器公鑰的指紋。這對(duì)于多用戶、多服務(wù)器的大型機(jī)構(gòu)很不方便,如果有員工離職,需要將他的公鑰從每臺(tái)服務(wù)器刪除。

二、證書登錄是什么?證書登錄就是為了解決上面的缺點(diǎn)而設(shè)計(jì)的。它引入了一個(gè)證書頒發(fā)機(jī)構(gòu)(Certificate1 authority,簡(jiǎn)稱 CA),對(duì)信任的服務(wù)器頒發(fā)服務(wù)器證書,對(duì)信任的用戶頒發(fā)用戶證書。登錄時(shí),用戶和服務(wù)器不需要提前知道彼此的公鑰,只需要交換各自的證書,驗(yàn)證是否可信即可。證書登錄的主要優(yōu)點(diǎn)有兩個(gè):(1)用戶和服務(wù)器不用交換公鑰,這更容易管理,也具有更好的可擴(kuò)展性。(2)證書可以設(shè)置到期時(shí)間,而公鑰沒有到期時(shí)間。針對(duì)不同的情況,可以設(shè)置有效期很短的證書,進(jìn)一步提高安全性。

三、證書登錄的流程SSH 證書登錄之前,如果還沒有證書,需要生成證書。具體方法是:(1)用戶和服務(wù)器都將自己的公鑰,發(fā)給 CA;(2)CA 使用服務(wù)器公鑰,生成服務(wù)器證書,發(fā)給服務(wù)器;(3)CA 使用用戶的公鑰,生成用戶證書,發(fā)給用戶。有了證書以后,用戶就可以登錄服務(wù)器了。整個(gè)過程都是 SSH 自動(dòng)處理,用戶無感知。第一步,用戶登錄服務(wù)器時(shí),SSH 自動(dòng)將用戶證書發(fā)給服務(wù)器。第二步,服務(wù)器檢查用戶證書是否有效,以及是否由可信的 CA 頒發(fā)。第三步,SSH 自動(dòng)將服務(wù)器證書發(fā)給用戶。第四步,用戶檢查服務(wù)器證書是否有效,以及是否由信任的 CA 頒發(fā)。第五步,雙方建立連接,服務(wù)器允許用戶登錄。

四、生成 CA 的密鑰證書登錄的前提是,必須有一個(gè) CA,而 CA 本質(zhì)上就是一對(duì)密鑰,跟其他密鑰沒有不同,CA 就用這對(duì)密鑰去簽發(fā)證書。雖然 CA 可以用同一對(duì)密碼簽發(fā)用戶證書和服務(wù)器證書,但是出于安全性和靈活性,最好用不同的密鑰分別簽發(fā)。所以,CA 至少需要兩對(duì)密鑰,一對(duì)是簽發(fā)用戶證書的密鑰,假設(shè)叫做 user_ca,另一對(duì)是簽發(fā)服務(wù)器證書的密鑰,假設(shè)叫做 host_ca。使用下面的命令,生成 user_ca。

# 生成 CA 簽發(fā)用戶證書的密鑰

# ssh-keygen -t rsa -b 4096 -f ~/.ssh/user_ca -C user_ca

上面的命令會(huì)在 ~/.ssh 目錄生成一對(duì)密鑰:user_ca(私鑰)和 user_ca.pub(公鑰)。

這個(gè)命令的各個(gè)參數(shù)含義如下。

-t rsa:指定密鑰算法 RSA。

-b 4096:指定密鑰的位數(shù)是4096位。安全性要求不高的場(chǎng)合,這個(gè)值可以小一點(diǎn),但是不應(yīng)小于1024。

-f ~/.ssh/user_ca:指定生成密鑰的位置和文件名。

-C user_ca:指定密鑰的識(shí)別字符串,相當(dāng)于注釋,可以隨意設(shè)置。

使用下面的命令,生成 host_ca。

# 生成 CA 簽發(fā)服務(wù)器證書的密鑰

# ssh-keygen -t rsa -b 4096 -f host_ca -C host_ca

上面的命令會(huì)在~/.ssh目錄生成一對(duì)密鑰:host_ca(私鑰)和 host_ca.pub(公鑰)。

現(xiàn)在,~/.ssh 目錄應(yīng)該至少有四把密鑰。

~/.ssh/user_ca

~/.ssh/user_ca.pub

~/.ssh/host_ca

~/.ssh/host_ca.pub

五、CA 簽發(fā)服務(wù)器證書有了 CA 以后,就可以簽發(fā)服務(wù)器證書了。簽發(fā)證書,除了 CA 的密鑰以外,還需要服務(wù)器的公鑰。一般來說,SSH 服務(wù)器(通常是sshd)安裝時(shí),已經(jīng)生成密鑰 /etc/ssh/ssh_host_rsa_key 了。如果沒有的話,可以用下面的命令生成。

# sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -b 4096 -t rsa

上面命令會(huì)在 /etc/ssh 目錄,生成 ssh_host_rsa_key(私鑰)和 ssh_host_rsa_key.pub(公鑰)。然后,需要把服務(wù)器公鑰 ssh_host_rsa_key.pub,復(fù)制或上傳到 CA 所在的服務(wù)器。上傳以后,CA 就可以使用密鑰 host_ca 為服務(wù)器的公鑰 ssh_host_rsa_key.pub 簽發(fā)服務(wù)器證書。

# ssh-keygen -s host_ca -I host.example.com -h -n host.example.com -V +52w ssh_host_rsa_key.pub

上面的命令會(huì)生成服務(wù)器證書 ssh_host_rsa_key-cert.pub(服務(wù)器公鑰名字加后綴-cert)。這個(gè)命令各個(gè)參數(shù)的含義如下。

-s:指定 CA 簽發(fā)證書的密鑰。

-I:身份字符串,可以隨便設(shè)置,相當(dāng)于注釋,方便區(qū)分證書,將來可以使用這個(gè)字符串撤銷證書。

-h:指定該證書是服務(wù)器證書,而不是用戶證書。

-n host.example.com:指定服務(wù)器的域名,表示證書僅對(duì)該域名有效。如果有多個(gè)域名,則使用逗號(hào)分隔。用戶登錄該域名服務(wù)器時(shí),SSH 通過證書的這個(gè)值,分辨應(yīng)該使用哪張證書發(fā)給用戶,用來證明服務(wù)器的可信性。

-V +52w:指定證書的有效期,這里為 52 周(一年)。默認(rèn)情況下,證書是永遠(yuǎn)有效的。建議使用該參數(shù)指定有效期,并且有效期最好短一點(diǎn),最長(zhǎng)不超過 52 周。

ssh_host_rsa_key.pub:服務(wù)器公鑰。

生成證書以后,可以使用下面的命令,查看證書的細(xì)節(jié)。

# ssh-keygen -L -f ssh_host_rsa_key-cert.pub

最后,為證書設(shè)置權(quán)限。

# chmod 600 ssh_host_rsa_key-cert.pub

六、CA 簽發(fā)用戶證書下面,再用 CA 簽發(fā)用戶證書。這時(shí)需要用戶的公鑰,如果沒有的話,客戶端可以用下面的命令生成一對(duì)密鑰。

# ssh-keygen -f ~/.ssh/user_key -b 4096 -t rsa

上面命令會(huì)在 ~/.ssh 目錄,生成 user_key(私鑰)和 user_key.pub(公鑰)。然后,將用戶公鑰 user_key.pub,上傳或復(fù)制到 CA 服務(wù)器。接下來,就可以使用 CA 的密鑰 user_ca 為用戶公鑰 user_key.pub 簽發(fā)用戶證書。

# ssh-keygen -s user_ca -I user@example.com -n user -V +1d user_key.pub

上面的命令會(huì)生成用戶證書 user_key-cert.pub(用戶公鑰名字加后綴-cert)。這個(gè)命令各個(gè)參數(shù)的含義如下。

-s:指定 CA 簽發(fā)證書的密鑰

-I:身份字符串,可以隨便設(shè)置,相當(dāng)于注釋,方便區(qū)分證書,將來可以使用這個(gè)字符串撤銷證書。

-n user:指定用戶名,表示證書僅對(duì)該用戶名有效。如果有多個(gè)用戶名,使用逗號(hào)分隔。用戶以該用戶名登錄服務(wù)器時(shí),SSH 通過這個(gè)值,分辨應(yīng)該使用哪張證書,證明自己的身份,發(fā)給服務(wù)器。

-V +1d:指定證書的有效期,這里為1天,強(qiáng)制用戶每天都申請(qǐng)一次證書,提高安全性。默認(rèn)情況下,證書是永遠(yuǎn)有效的。

user_key.pub:用戶公鑰。

生成證書以后,可以使用下面的命令,查看證書的細(xì)節(jié)。

# ssh-keygen -L -f user_key-cert.pub

最后,為證書設(shè)置權(quán)限。

# chmod 600 user_key-cert.pub

七、服務(wù)器安裝證書CA 生成服務(wù)器證書 ssh_host_rsa_key-cert.pub 以后,需要將該證書發(fā)回服務(wù)器,可以使用下面的 scp 命令,將證書拷貝過去。

# scp ~/.ssh/ssh_host_rsa_key-cert.pub root@host.example.com:/etc/ssh/

然后,將下面一行添加到服務(wù)器配置文件 /etc/ssh/sshd_config。

HostCertificate/etc/ssh/ssh_host_rsa_key-cert.pub

上面的代碼告訴 sshd,服務(wù)器證書是哪一個(gè)文件。重新啟動(dòng) sshd。

# sudo systemctl restart sshd

# 或者

# sudo service sshd restart

八、服務(wù)器安裝 CA 公鑰為了讓服務(wù)器信任用戶證書,必須將 CA 簽發(fā)用戶證書的公鑰 user_ca.pub,拷貝到服務(wù)器。

# scp ~/.ssh/user_ca.pub root@host.example.com:/etc/ssh/

上面的命令,將 CA 簽發(fā)用戶證書的公鑰 user_ca.pub,拷貝到 SSH 服務(wù)器的 /etc/ssh 目錄。然后,將下面一行添加到服務(wù)器配置文件 /etc/ssh/sshd_config。

TrustedUserCAKeys/etc/ssh/user_ca.pub (www.113p.cn)

上面的做法是將 user_ca.pub 加到 /etc/ssh/sshd_config,這會(huì)產(chǎn)生全局效果,即服務(wù)器的所有賬戶都會(huì)信任 user_ca 簽發(fā)的所有用戶證書。另一種做法是將 user_ca.pub 加到服務(wù)器某個(gè)賬戶的 ~/.ssh/authorized_keys 文件,只讓該賬戶信任 user_ca 簽發(fā)的用戶證書。具體方法是打開 ~/.ssh/authorized_keys,追加一行,開頭是 @cert-authority principals="...",然后后面加上 user_ca.pub 的內(nèi)容,大概是下面這個(gè)樣子。

@cert-authority principals="user" ssh-rsa AAAAB3Nz...XNRM1EX2gQ==

上面代碼中,principals="user" 指定用戶登錄的服務(wù)器賬戶名,一般就是 authorized_keys 文件所在的賬戶。重新啟動(dòng) sshd。

# sudo systemctl restart sshd

九、客戶端安裝證書 (百度:113資訊網(wǎng))客戶端安裝用戶證書很簡(jiǎn)單,就是從 CA 將用戶證書 user_key-cert.pub 復(fù)制到客戶端,與用戶的密鑰 user_key 保存在同一個(gè)目錄即可。

十、客戶端安裝 CA 公鑰為了讓客戶端信任服務(wù)器證書,必須將 CA 簽發(fā)服務(wù)器證書的公鑰 host_ca.pub,加到客戶端的 /etc/ssh/ssh_known_hosts 文件(全局級(jí)別)或者 ~/.ssh/known_hosts 文件(用戶級(jí)別)。具體做法是打開 ssh_known_hosts 或 known_hosts 文件,追加一行,開頭為 @cert-authority *.example.com,然后將 host_ca.pub 文件的內(nèi)容(即公鑰)粘貼在后面,大概是下面這個(gè)樣子。

@cert-authority *.example.com ssh-rsa AAAAB3Nz...XNRM1EX2gQ==

上面代碼中,*.example.com 是域名的模式匹配,表示只要服務(wù)器符合該模式的域名,且簽發(fā)服務(wù)器證書的 CA 匹配后面給出的公鑰,就都可以信任。如果沒有域名限制,這里可以寫成*。如果有多個(gè)域名模式,可以使用逗號(hào)分隔;如果服務(wù)器沒有域名,可以用主機(jī)名(比如 host1,host2,host3)或者 IP 地址(比如 11.12.13.14,21.22.23.24)。然后,就可以使用證書,登錄遠(yuǎn)程服務(wù)器了。

# ssh -i ~/.ssh/user_key user@host.example.com

上面命令的 -i 參數(shù)用來指定用戶的密鑰。如果證書與密鑰在同一個(gè)目錄,則連接服務(wù)器時(shí)將自動(dòng)使用該證書。

十一、廢除證書廢除證書的操作,分成用戶證書的廢除和服務(wù)器證書的廢除兩種。服務(wù)器證書的廢除,用戶需要在 known_hosts 文件里面,修改或刪除對(duì)應(yīng)的 @cert-authority 命令的那一行。用戶證書的廢除,需要在服務(wù)器新建一個(gè) /etc/ssh/revoked_keys 文件,然后在配置文件 sshd_config 添加一行,內(nèi)容如下。

RevokedKeys/etc/ssh/revoked_keys

revoked_keys 文件保存不再信任的用戶公鑰,由下面的命令生成。

# ssh-keygen -kf /etc/ssh/revoked_keys -z 1 ~/.ssh/user1_key.pub

上面命令中,-z 參數(shù)用來指定用戶公鑰保存在 revoked_keys 文件的哪一行,這個(gè)例子是保存在第 1 行。如果以后需要廢除其他的用戶公鑰,可以用下面的命令保存在第 2 行。

# ssh-keygen -ukf /etc/ssh/revoked_keys -z 2 ~/.ssh/user2_key.pub

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉