1027
阿裏雲
雲服務器 ECS Linux SSH 基於密鑰交換的自動登錄原理簡介及配置說明__遠程登錄 (SSH)_Linux操作運維問題_雲服務器 ECS-阿裏雲
,注意:,本文相關配置及說明已在, CentOS 6.5 64 ,位操作係統中進行過測試。其它類型及版本操作係統配置可能有所差異,具體情況請參閱相應操作係統官方文檔。
,SSH ,服務可以對所有傳輸的數據進行加密,提供比傳統, ,telnet 服務更高的安全性(更多關於,SSH ,服務的連接交互過程,可以參閱, ,,,雲服務器 ECS Linux SSH ,,連接交互過程簡介,)。而基於密鑰認證的 ,SSH ,自動化登錄,在保障安全性的同時,可以簡化登錄過程,降低運維成本。本文先簡要介紹基於密鑰交換的, ,SSH ,自動登錄的原理,然後對配置方法進行說明。
,原理簡介
,SSH,證書認證登錄的基礎是一對唯一匹配密鑰,: ,私鑰,(,private key,)和公鑰(,public key,)。公鑰用於對數據進行加密,而且隻能用於加密。而私鑰隻能對使用所匹配的公鑰,所加密過的數據進行解密。私鑰需要用戶單獨妥善保管。SSH ,客戶端使用私鑰向服務器證明自已的身份。而公鑰是公開的,可以按需將其配置到目標服務器上自己的相應帳號中。
,在進行, ,SSH 登錄認證時,進行私鑰和公鑰協商。如果匹配,則身份得以證明,認證成功,允許登錄。否則,將會繼續使用密碼驗證等其它方式進行登錄校驗。SSH ,證書驗證登錄配置及登錄協商過程,如下證書校驗交互登錄流程示意圖所示:
,各步驟補充說明如下:
生成證書
- ,客戶端生成密鑰對。
- ,,將公鑰信息寫入目標服務器、目標賬戶的配置文件。該操作隱含表示了客戶端擁有對目標服務器的控製權。
協商交互過程
-
, ,,客戶端向目標服務器發送登錄請求。在SSH 服務啟用了證書驗證登錄方式後,會優先通過證書驗證方式進行登錄驗證。,
- ,目標服務器根據, ,SSH ,服務配置,在用戶對應目錄及文件中讀取到有效的公鑰信息。
-
,目標服務器生成一串隨機數,然後使用相應的公鑰對其加密。
-
,目標服務器將加密後的密文發回客戶端。
-
,客戶端使用默認目錄或 -,i ,參數指定的私鑰嚐試解密。
-
,如果解密失敗,則會繼續嚐試密碼驗證等其它方式進行登錄校驗。如果解密成功,則將解密後的原文信息重新發送給目標服務器。意思類似於: ,“,看,這是這段話的原文。我能讀懂發過來的密文,我擁有服務器的控製權,請讓我登錄。,”
-
,,目標服務器對客戶端返回的信息進行比對。如果比對成功,則表示認證成功,客戶端可以登錄。如果對比失敗,則表示認證失敗,則會繼續嚐試密碼驗證等其它方式進行登錄校驗。
,自動登錄配置
,生成密鑰對
,SSH ,協議, V1,隻使用, ,RSA ,算法,而, ,SSH ,協議,V2 ,對, ,RSA ,算法和, ,DSA ,算法都支持。目前所有,OpenSSH ,版本都應該對兩種算法都支持。兩種算法的密鑰的生成指令和使用方法相同,本文僅以, ,RSA ,算法為例進行相關說明。
,生成密鑰對的時候,可以按需決定是否設置密碼。但需要注意的是,如果設置了密碼,還需結合 ,ssh-agent ,代理和 ,ssh-add ,配置才能實現自動登錄。同時,相關配置隻對 ,ssh-agent ,啟動的相應 ,shell ,生效,用戶退出後重新登錄時還需重新配置。所以,為簡便起見,本文以常見的、不配置密碼的情況進行說明。
,可以在任意支持環境下生成密鑰對。,Windows ,和, ,Linux ,環境下,配置分別說明如下。
,Windows ,環境下生成密鑰對
,在 ,Windows ,環境下,通常借助各種應用軟件來創建和管理密鑰對。以常見的,NetSarang Xshell,為例,請執行如下步驟創建密鑰對:
- ,打開,Xshell,程序。
- ,,單擊 工具 ,> 用戶密鑰管理者 ,再點擊 生成 。
- ,,,在打開的密鑰創建向導中,選擇默認的 ,RSA 密鑰算法及密鑰長度(默認, 2048 位)後,點擊, 下一步 。
- ,,,,程序生成密鑰對後,點擊 ,下一步,。
- ,,,,,如前麵所述,密鑰加密密碼留空:
- 點擊 下一步,會彈出確認信息,點擊 是 確認。
- ,複製或者點擊, ,保存為文件, ,對公鑰信息進行保存。
- ,,點擊, ,完成, ,,在, ,用戶密鑰管理者 ,列表中能看到相應的密鑰信息。
,Linux ,環境下生成密鑰對
,在 ,Linux ,環境下,通常使用係統自帶的 ,ssh-keygen ,軟件來創建和管理密鑰對。請執行如下步驟創建密鑰對:
- ,以任意具有 ,ssh-keygen ,執行權限的用戶登錄服務器。
- ,,使用如下指令,基於 ,rsa ,算法創建密鑰對:
ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): → 默認保存路徑和文件名,可以按需修改。 Enter passphrase (empty for no passphrase): → 如前麵所述,不設置密碼,回車確認即可。 Enter same passphrase again: → 不設置密碼,回車確認即可。 Your identification has been saved in /root/.ssh/id_rsa. → 創建的私鑰文件。 Your public key has been saved in /root/.ssh/id_rsa.pub. → 創建的公鑰文件。 The key fingerprint is: 17:b8:0e:76:cb:57:21:3b:f2:bb:8b:a2:42:2b:54:be root@iZ233gr74jvZ The key's randomart image is: +--[ RSA 2048]----+ | | | . | | . o . | | . . + . | | o o S + . | | ... . = = o | |.. .. + o | |. oE . o . | | . ... .. +o | +-----------------+
,說明:
-
,如果 .ssh ,目錄不存在,程序會自動創建。
-
,生成的密鑰對默認保存在當前用戶家目錄下的 .ssh ,文件夾中,文件名默認為, id_rsa,(私鑰) ,和, id_rsa.pub,(公鑰)。用戶可以按需設置保存路徑和文件名。
,密鑰配置
,生成密鑰對後,進行如下處理:
,私鑰的處理
,私鑰用於信息校驗,請確保安全。可以將私鑰上傳到其它源服務器上,或者直接參閱前述說明創建新的密鑰對。
,公鑰的處理
,公鑰信息需要寫入目標服務器、目標用戶的配置文件中,默認配置文件為對應用戶家目錄下, .ssh ,文件夾中的, ,authorized_keys,,即:
~/.ssh/authorized_keys
,可以複製公鑰信息後,直接通過, ,vi ,等編輯器將其寫入上述文件。或者通過如下指令,在源服務器上配置寫入:
cat ~/.ssh/id_rsa.pub | ssh <用戶名>@<目標服務器IP> 'cat >> ~/.ssh/authorized_keys';
比如:
cat ~/.ssh/id_rsa.pub | ssh root@120.26.38.248 'cat >> ~/.ssh/authorized_keys';
,注意:
- 該操作由於需要登錄目標服務器才能完成,所以隱含表示了客戶端擁有對目標服務器的控製權。
-
如果修改了默認的目錄或文件名,則需要同步修改SSH 服務配置文件(默認為/etc/ssh/sshd_config)中的AuthorizedKeysFile 參數,否則會因找不到公鑰信息而導致自動登錄失敗。
,參數與權限檢查確認
,要順利完成自動登錄,還需對,SSH ,服務相關參數及關聯文件、文件夾的權限進行確認或調整。
,SSH ,服務參數設置
,SSH ,服務默認開啟了證書認證支持。編輯 ,SSH ,服務配置文件(默認為,/etc/ssh/sshd_config,),確保如下參數沒有顯示的置為 ,no,。否則,將參數值修改為 ,yes,,或者整個刪除或注釋(在最開頭添加, # ,號)整行配置。比如:
#RSAAuthentication yes
#PubkeyAuthentication yes
,同時,如前麵所述,如果修改了默認的公鑰路徑或文件名,還需確保 ,AuthorizedKeysFile, ,參數值配置的信息與其一致。
,注意,:如果對相關參數做了修改,需要重啟 ,SSH ,服務生效。
,相關權限設置
,SSH ,服務證書驗證方式登錄,對相關目錄和文件的權限有要求。權限配置異常可能會導致登錄失敗。
- ,.ssh ,目錄的權限配置
,使用如下指令,確保 $HOME/.ssh ,目錄隻有所有者才有權寫入:chmod 700 ~/.ssh
- ,authorized_keys ,文件的權限配置
,使用如下指令,確保其它用戶對 ,authorized_keys ,文件沒有修改權限:,?chmod 600 ~/.ssh/authorized_keys
- ,進一步安全配置
,進一步的安全設置可以將, ,authorized_keys ,文件權限配置為, 400,(其他用戶沒有任何權限),並對其及, .ssh ,目錄添加, ,immutable ,位權限(防止文件被修改):
,chmod 400 ~/.ssh/authorized_keys chattr +i ~/.ssh/authorized_keys chattr +i ~/.ssh
,自動登錄
,完成上述配置後,在客戶端即可免密碼直接登錄。說明如下:
,Windows ,環境自動登錄
,Window ,環境下,還是以常見的,NetSarang Xshell,為例,請執行如下配置進行自動登錄:
- ,單擊 ,文件 ,> ,屬性,,打開主機屬性配置窗口。
- ,,點擊, ,連接, ,> ,用戶身份驗證,,如下圖所示,將, ,方法, ,設置為, ,Public Key,;將, ,用戶名, ,設置為已經設置了證書登錄的相應用戶名;將, ,用戶密鑰, ,設置,為對應的私鑰。最後,點擊, ,確定,。
- ,再次連接相應服務器時,無需密碼輸入用戶名和密碼,即可自動登錄。
,Linux ,環境自動登錄
,Linux ,環境下,在客戶端直接通過, ,ssh ,軟件免密碼登錄:
ssh <用戶名>@<目標服務器>
比如:
ssh root@192.168.0.1
,如果修改了私鑰路徑或文件名,則需要通過, ,–i ,參數進行指定:
ssh –i <私鑰路徑及文件名> <用戶名>@<目標服務器>
比如:
ssh -i /bak/my_rsa user@192.168.0.1
,更多信息
- ,,Secure Shell,:,Wikipedia ,上關於 ,SSH ,的介紹和討論。
- ,,,OpenSSH Manual Pages,:,OpenSSH ,官方使用手冊。
最後更新:2016-07-12 15:24:19
上一篇:
雲服務器 ECS Linux SSH 連接交互過程簡介__遠程登錄 (SSH)_Linux操作運維問題_雲服務器 ECS-阿裏雲
下一篇:
雲監控ECS監控插件安裝方法__技術分享_技術運維問題_雲監控-阿裏雲
設置頁麵優化__配置操作接口_API 手冊_CDN-阿裏雲
連接集群__集群管理_用戶指南_容器服務-阿裏雲
阿裏雲聯手江蘇無錫 打造中國首個物聯網之城
庫名不同的數據庫之間的數據遷移__最佳實踐_數據傳輸-阿裏雲
是否可以僅允許子用戶查看青島的ECS實例,但是不允許查看磁盤信息及快照信息___雲服務器(ECS)授權問題_授權常見問題_訪問控製-阿裏雲
hash分區__分區_SQL語法參考_雲數據庫 OceanBase-阿裏雲
管理 Job__SchedulerX for EDAS_二方服務_企業級分布式應用服務 EDAS-阿裏雲
查詢實例數據加密狀態__實例管理_API 參考_雲數據庫 RDS 版-阿裏雲
DROP TABLE__數據定義語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
唯一性保證__進階與深入_數據集成-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲