使用密碼登入,每次都必須輸入密碼,非常麻煩。好在ssh還提供了公鑰登入,可以省去輸入密碼的步驟。
1、原理
所謂"公鑰登入",原理很簡單,就是使用者將自己的公鑰儲存在遠端主機上。登入的時候,遠端主機會向使用者傳送一段隨機字串,使用者用自己的私鑰加密後,再發回來。遠端主機用事先儲存的公鑰進行解密,如果成功,就證明使用者是可信的,直接允許登入shell,不再要求輸入密碼,這和之前的ssh賬號密碼也沒有直接關係。
簡單的說,就是
公鑰 和 私鑰 互為一對
用其中乙個加密後,只有用另外乙個才能解密恢復原文
公鑰 公諸於世,私鑰 必須保證本人才能擁有
如b 要發加密資訊給 a
b 要發機密資訊給 a,可以用 a 的 pub_key
明文 -> a.pub_key -> 密文
這時候,只能用 a.private_key 解密才能得到原文(包括 a.pub_key 也不行)
解密密文 -> a.private_key -> 明文
2、方法
這種方法要求使用者必須提供自己的公鑰。如果沒有現成的,可以直接用ssh-keygen生成乙個:
$ ssh-keygen
執行上面的命令以後,系統會出現一系列提示,可以一路回車。其中有乙個問題是,要不要對私鑰設定口令(passphrase),如果擔心私鑰的安全,這裡可以設定乙個。
執行結束以後,在$home/.ssh/目錄下,會新生成兩個檔案:id_rsa.pub和id_rsa。前者是你的公鑰,後者是你的私鑰。
這時再輸入下面的命令,將公鑰傳送到遠端主機host上面:
$ ssh-copy-id user@host
或者直接將公鑰貼上到遠端主機$home/.ssh/authorized_keys檔案的末尾。要使用什麼使用者名稱登陸遠端主機,就修改相應使用者的$home/.ssh/authorized_keys檔案。
好了,從此你再登入遠端主機,就不需要輸入密碼了。
如果還是不行,就開啟遠端主機的/etc/ssh/sshd_config這個檔案,檢查下面幾行前面"#"注釋是否取掉。
rsaauthentication yes
pubkeyauthentication yes
authorizedkeysfile .ssh/authorized_keys
然後,重啟遠端主機的ssh服務。
3、關於authorized_keys檔案
遠端主機將使用者的公鑰,儲存在登入後的使用者主目錄的$home/.ssh/authorized_keys檔案中。公鑰就是一段字串,只要把它追加在authorized_keys檔案的末尾就行了。
ssh公鑰登入
當你想免密碼登入某台server,將要你那台操作的本機的pub公鑰複製出去到server上 2 將ssh客戶的公鑰新增到ssh伺服器中使用者的認證檔案中 複製公鑰檔案 將客戶端中的使用者公鑰檔案複製到ssh伺服器中 公鑰檔案的複製可使用軟盤 u盤或網路 將公鑰內容追加到authorized keys...
SSH公鑰登入原理
通常我們使用xshell登入ssh時,有兩種方式 一 密碼口令 類似於賬號密碼登入 1.客戶端連線上伺服器,伺服器把公鑰發給客戶端。2.客戶端用伺服器公鑰加密,上傳密碼。3.伺服器用私鑰解密,如果匹配,則連線。二 金鑰登入 一般使用rsa公鑰私鑰技術。1.生成金鑰對。2.將公鑰資訊寫入目標使用者的金...
公鑰私鑰及ssh公鑰無密碼登入
首先我們需要區分加密和認證這兩個基本概念。加密是將資料資料加密,使得非法使用者即使取得加密過的資料,也無法獲取正確的資料內容,所以資料加密可以保護資料,防止監聽 其重點在於資料的安全性。身份認證是用來判斷某個身份的真實性,確認身份後,系統才可以依不同的身份給予不同的許可權。其重點在於使用者的真實性。...