對(duì)SSH連接來(lái)說(shuō)最重要的4個(gè)文件
譯文【51CTO.com快譯】如果你是Linux管理員,就知道安全外殼的價(jià)值。要是沒(méi)有這個(gè)工具,遠(yuǎn)程登錄到Linux服務(wù)器(或通過(guò)安全通道發(fā)送文件)就可能帶來(lái)很大的麻煩。然后你得到SSH,可以毫不猶豫地使用它。但對(duì)于那些剛接觸Linux管理的人來(lái)說(shuō),可能不太了解SSH的工作原理。當(dāng)然,你可以在計(jì)算上發(fā)出這個(gè)命令:
- ssh jack@192.168.1.100
你將登錄,可以處理工作了。這個(gè)連接背后發(fā)生了什么?關(guān)鍵部分又是什么?
我認(rèn)為將SSH分解為對(duì)SSH連接來(lái)說(shuō)最重要的四個(gè)文件是好主意,那樣你就能更好地了解工作原理,從而開(kāi)始使用該工具。
不妨看看那些關(guān)鍵的文件。
known_hosts
對(duì)SSH來(lái)說(shuō)這個(gè)文件非常重要。~/.ssh/known_hosts文件包含你登錄的計(jì)算機(jī)的SSH指紋。這些指紋是使用遠(yuǎn)程服務(wù)器的SSH密鑰生成的。通過(guò)安全外殼連接到遠(yuǎn)程計(jì)算機(jī)時(shí),系統(tǒng)會(huì)問(wèn)你是否想要繼續(xù)連接(圖A)。
圖A. 連接或不連接,那是個(gè)問(wèn)題
你對(duì)該問(wèn)題回答“是”時(shí),遠(yuǎn)程主機(jī)指紋將保存到known_hosts文件中。該密鑰將顯示為隨機(jī)字符串。每個(gè)條目將以| 1 |開(kāi)頭(圖B)。
圖B. 已知的主機(jī)文件
連接發(fā)生的情況如下:
1. 你嘗試通過(guò)客戶端與遠(yuǎn)程服務(wù)器建立連接。
2. 遠(yuǎn)程服務(wù)器將其公鑰發(fā)送給客戶端。
3. SSH客戶端在~/.ssh/known_hosts中搜索密鑰指紋。
4. SSH客戶端加載并驗(yàn)證密鑰。
5. 進(jìn)行用戶身份驗(yàn)證
6. 如果身份驗(yàn)證成功,你將登錄到遠(yuǎn)程計(jì)算機(jī)。
同樣,在該連接過(guò)程中,如果未找到遠(yuǎn)程指紋,SSH客戶端將詢問(wèn)你是否要繼續(xù),當(dāng)你回答繼續(xù)時(shí),將指紋保存到~/.ssh/known_hosts。
authorized_keys
在~/.ssh目錄中,還有另一個(gè)名為authorized_keys的文件。該文件與known_hosts文件大不一樣。authorized_keys包含從遠(yuǎn)程客戶端拷貝到服務(wù)器的所有SSH身份驗(yàn)證密鑰。這用于SSH密鑰身份驗(yàn)證。
為了使密鑰驗(yàn)證正常工作,客戶端的公鑰將拷貝到遠(yuǎn)程服務(wù)器上的~/.ssh/authorized_keys文件。最簡(jiǎn)單的方法是在客戶端上使用ssh-copy-id命令,就像這樣:
- ssh-copy-id jack@192.168.1.100
系統(tǒng)將提示你輸入遠(yuǎn)程用戶的密碼。驗(yàn)證成功后,來(lái)自客戶端的公鑰將拷貝到遠(yuǎn)程服務(wù)器上的~/.ssh/authorized_keys文件中。如果你打開(kāi)該文件,會(huì)看到每個(gè)條目都以ssh-rsa開(kāi)頭,并以客戶端計(jì)算機(jī)的username@hostname結(jié)尾(圖C)。
圖C. authorized_keys文件示例
一旦該密鑰保存到authorized_keys(在遠(yuǎn)程服務(wù)器上),你可以使用SSH密鑰身份驗(yàn)證登錄到該服務(wù)器(從已保存公鑰的客戶端登錄)。
ssh_config
/etc/ssh/ssh_config文件是用于SSH的系統(tǒng)范圍客戶端配置的文件。此處看到的配置僅在ssh命令用來(lái)連接到另一個(gè)主機(jī)時(shí)才起作用。你通常不需要編輯該文件。
sshd_config
另一方面,/etc/ssh/sshd_config文件是SSH守護(hù)程序的配置文件。在這里,你配置以下內(nèi)容:
- 默認(rèn)SSH端口。
- 公鑰驗(yàn)證。
- root登錄權(quán)限。
- 密碼驗(yàn)證。
- X11Forwarding。
比如說(shuō),假設(shè)你只想允許密鑰驗(yàn)證并禁用密碼驗(yàn)證。在遠(yuǎn)程服務(wù)器上,可以編輯sshd_config文件,如下所示:
將#PubkeyAuthentication yes改成Pubkeyauthentication yes。
將#PasswordAuthentication yes改成PasswordAuthentication no。
一旦完成這些更改,重新啟動(dòng)ssh服務(wù),遠(yuǎn)程服務(wù)器將只允許來(lái)自~/.ssh/authorized_keys中有條目的客戶端計(jì)算機(jī)的連接。遠(yuǎn)程服務(wù)器的authorized_keys文件中沒(méi)有條目?那就無(wú)法訪問(wèn)。
了解那些文件
如果了解上述四個(gè)文件,你可以更好地使用SSH工具。你需要知道這些文件是如何運(yùn)作的嗎?并不需要。不過(guò)作為管理員,如果你對(duì)使用的工具有更深入的了解,就會(huì)從中受益。
想了解更多信息,請(qǐng)閱讀以下參考手冊(cè)頁(yè):
man ssh
man ssh_config
man sshd_config
原文標(biāo)題:The 4 most important files for SSH connections,作者:Jack Wallen
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】