但是,SSH 還有第三種登錄方法,那就是證書登錄。很多情況下,它是更合理、更安全的登錄方法,本文就介紹這種登錄方法。

一、非證書登錄的缺點密" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 建站知識 > 手把手教你!SSH 證書登錄教程

手把手教你!SSH 證書登錄教程

時間:2023-02-23 02:27:01 | 來源:建站知識

時間:2023-02-23 02:27:01 來源:建站知識

手把手教你!SSH 證書登錄教程:SSH 是服務器登錄工具,提供密碼登錄和密鑰登錄。

但是,SSH 還有第三種登錄方法,那就是證書登錄。很多情況下,它是更合理、更安全的登錄方法,本文就介紹這種登錄方法。

一、非證書登錄的缺點

密碼登錄和密鑰登錄,都有各自的缺點。

密碼登錄需要輸入服務器密碼,這非常麻煩,也不安全,存在被暴力破解的風險。

密鑰登錄需要服務器保存用戶的公鑰,也需要用戶保存服務器公鑰的指紋。這對于多用戶、多服務器的大型機構(gòu)很不方便,如果有員工離職,需要將他的公鑰從每臺服務器刪除。

二、證書登錄是什么?

證書登錄就是為了解決上面的缺點而設計的。它引入了一個證書頒發(fā)機構(gòu)(Certificate1 authority,簡稱 CA),對信任的服務器頒發(fā)服務器證書,對信任的用戶頒發(fā)用戶證書。

登錄時,用戶和服務器不需要提前知道彼此的公鑰,只需要交換各自的證書,驗證是否可信即可。

證書登錄的主要優(yōu)點有兩個:(1)用戶和服務器不用交換公鑰,這更容易管理,也具有更好的可擴展性。(2)證書可以設置到期時間,而公鑰沒有到期時間。針對不同的情況,可以設置有效期很短的證書,進一步提高安全性。

三、證書登錄的流程

SSH 證書登錄之前,如果還沒有證書,需要生成證書。具體方法是:(1)用戶和服務器都將自己的公鑰,發(fā)給 CA;(2)CA 使用服務器公鑰,生成服務器證書,發(fā)給服務器;(3)CA 使用用戶的公鑰,生成用戶證書,發(fā)給用戶。

有了證書以后,用戶就可以登錄服務器了。整個過程都是 SSH 自動處理,用戶無感知。

四、生成 CA 的密鑰

證書登錄的前提是,必須有一個 CA,而 CA 本質(zhì)上就是一對密鑰,跟其他密鑰沒有不同,CA 就用這對密鑰去簽發(fā)證書。

雖然 CA 可以用同一對密碼簽發(fā)用戶證書和服務器證書,但是出于安全性和靈活性,最好用不同的密鑰分別簽發(fā)。所以,CA 至少需要兩對密鑰,一對是簽發(fā)用戶證書的密鑰,假設叫做 user_ca,另一對是簽發(fā)服務器證書的密鑰,假設叫做 host_ca。

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

# 生成 CA 簽發(fā)用戶證書的密鑰 $ ssh-keygen -t rsa -b 4096 -f ~/.ssh/user/_ca -C user/_ca上面的命令會在 ~/.ssh 目錄生成一對密鑰:user_ca(私鑰)和 user_ca.pub(公鑰)。

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

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

# 生成 CA 簽發(fā)服務器證書的密鑰$ ssh-keygen -t rsa -b 4096 -f host_ca -C host_ca上面的命令會在~/.ssh目錄生成一對密鑰:host_ca(私鑰)和 host_ca.pub(公鑰)。

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

五、CA 簽發(fā)服務器證書

有了 CA 以后,就可以簽發(fā)服務器證書了。

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

$ sudo ssh-keygen -f /etc/ssh/ssh_host_rsa_key -b 4096 -t rsa上面命令會在 /etc/ssh 目錄,生成 ssh_host_rsa_key(私鑰)和 ssh_host_rsa_key.pub(公鑰)。然后,需要把服務器公鑰 ssh_host_rsa_key.pub,復制或上傳到 CA 所在的服務器。

上傳以后,CA 就可以使用密鑰 host_ca 為服務器的公鑰 ssh_host_rsa_key.pub 簽發(fā)服務器證書。

$ ssh-keygen -s host_ca -I host.example.com -h -n host.example.com -V +52w ssh_host_rsa_key.pub上面的命令會生成服務器證書 ssh_host_rsa_key-cert.pub(服務器公鑰名字加后綴-cert)。這個命令各個參數(shù)的含義如下。

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

$ ssh-keygen -L -f ssh_host_rsa_key-cert.pub最后,為證書設置權限。

$ chmod 600 ssh_host_rsa_key-cert.pub

六、CA 簽發(fā)用戶證書

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

$ ssh-keygen -f ~/.ssh/user_key -b 4096 -t rsa上面命令會在 ~/.ssh 目錄,生成 user_key(私鑰)和 user_key.pub(公鑰)。

然后,將用戶公鑰 user_key.pub,上傳或復制到 CA 服務器。接下來,就可以使用 CA 的密鑰 user_ca 為用戶公鑰 user_key.pub 簽發(fā)用戶證書。

$ ssh-keygen -s user_ca -I user@example.com -n user -V +1d user_key.pub上面的命令會生成用戶證書 user_key-cert.pub(用戶公鑰名字加后綴-cert)。這個命令各個參數(shù)的含義如下。

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

$ ssh-keygen -L -f user_key-cert.pub最后,為證書設置權限。

$ chmod 600 user_key-cert.pub

七、服務器安裝證書

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

$ scp ~/.ssh/ssh_host_rsa_key-cert.pub root@host.example.com:/etc/ssh/然后,將下面一行添加到服務器配置文件 /etc/ssh/sshd_config。

HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub上面的代碼告訴 sshd,服務器證書是哪一個文件。

重新啟動 sshd。

$ sudo systemctl restart sshd# 或者$ sudo service sshd restart

八、服務器安裝 CA 公鑰

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

$ scp ~/.ssh/user_ca.pub root@host.example.com:/etc/ssh/上面的命令,將 CA 簽發(fā)用戶證書的公鑰 user_ca.pub,拷貝到 SSH 服務器的 /etc/ssh 目錄。

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

TrustedUserCAKeys /etc/ssh/user_ca.pub上面的做法是將 user_ca.pub 加到 /etc/ssh/sshd_config,這會產(chǎn)生全局效果,即服務器的所有賬戶都會信任 user_ca 簽發(fā)的所有用戶證書。

另一種做法是將 user_ca.pub 加到服務器某個賬戶的 ~/.ssh/authorized_keys 文件,只讓該賬戶信任 user_ca 簽發(fā)的用戶證書。具體方法是打開 ~/.ssh/authorized_keys,追加一行,開頭是 @cert-authority principals="...",然后后面加上 user_ca.pub 的內(nèi)容,大概是下面這個樣子。

@cert-authority principals="user" ssh-rsa AAAAB3Nz...XNRM1EX2gQ==上面代碼中,principals="user" 指定用戶登錄的服務器賬戶名,一般就是 authorized_keys 文件所在的賬戶。

重新啟動 sshd。

$ sudo systemctl restart sshd# 或者$ sudo service sshd restart至此,SSH 服務器已配置為信任 user_ca 簽發(fā)的證書。

九、客戶端安裝證書

客戶端安裝用戶證書很簡單,就是從 CA 將用戶證書 user_key-cert.pub 復制到客戶端,與用戶的密鑰 user_key 保存在同一個目錄即可。

十、客戶端安裝 CA 公鑰

為了讓客戶端信任服務器證書,必須將 CA 簽發(fā)服務器證書的公鑰 host_ca.pub,加到客戶端的 /etc/ssh/ssh_known_hosts 文件(全局級別)或者 ~/.ssh/known_hosts 文件(用戶級別)。

具體做法是打開 ssh_known_hosts 或 known_hosts 文件,追加一行,開頭為 @cert-authority *.http://example.com,然后將 host_ca.pub 文件的內(nèi)容(即公鑰)粘貼在后面,大概是下面這個樣子。

@cert-authority http://_.example.com ssh-rsa AAAAB3Nz...XNRM1EX2gQ== 上面代碼中,http://_.example.com 是域名的模式匹配,表示只要服務器符合該模式的域名,且簽發(fā)服務器證書的 CA 匹配后面給出的公鑰,就都可以信任。如果沒有域名限制,這里可以寫成*。如果有多個域名模式,可以使用逗號分隔;如果服務器沒有域名,可以用主機名(比如 host1,host2,host3)或者 IP 地址(比如 11.12.13.14,21.22.23.24)。

然后,就可以使用證書,登錄遠程服務器了。

$ ssh -i ~/.ssh/user_key user@host.example.com上面命令的 -i 參數(shù)用來指定用戶的密鑰。如果證書與密鑰在同一個目錄,則連接服務器時將自動使用該證書。

十一、廢除證書

廢除證書的操作,分成用戶證書的廢除和服務器證書的廢除兩種。

服務器證書的廢除,用戶需要在 known_hosts 文件里面,修改或刪除對應的 @cert-authority 命令的那一行。

用戶證書的廢除,需要在服務器新建一個 /etc/ssh/revoked_keys 文件,然后在配置文件 sshd_config 添加一行,內(nèi)容如下。

RevokedKeys /etc/ssh/revoked_keysrevoked_keys 文件保存不再信任的用戶公鑰,由下面的命令生成。

$ ssh-keygen -kf /etc/ssh/revoked_keys -z 1 ~/.ssh/user1_key.pub上面命令中,-z 參數(shù)用來指定用戶公鑰保存在 revoked_keys 文件的哪一行,這個例子是保存在第 1 行。

如果以后需要廢除其他的用戶公鑰,可以用下面的命令保存在第 2 行。

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

十二、參考鏈接


來自:阮一峰的網(wǎng)絡日志

鏈接:https://tinyurl.com/yc9xrc7t


如有錯誤或其它問題,歡迎小伙伴留言評論、指正。如有幫助,歡迎點贊+轉(zhuǎn)發(fā)分享。

更多相關開源技術文章,請持續(xù)關注民工哥本站技術專欄。

我是民工哥,一個愛折騰的IT技術老司機,歡迎關注我,我們一起學習,共同成長??!

關鍵詞:教程,證書,把手

74
73
25
news

版權所有? 億企邦 1997-2025 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉