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