本文以securecrt 為例給出公鑰登陸的過程及原理。
過程
(引用自:
1、securecrt設定
****************************************==
quick connect-> authentiation -> public key -> properties ->create identity file ->dsa/rsa -> set passphrase -> done
****************************************==
完成時會在指定目錄生成兩個檔案,預設名稱為:私鑰identity和公鑰identity.pub。
2、ssh伺服器設定如果不存在/root/.ssh目錄,則自行建立。
****************************************==
# mkdir /root/.ssh# chmod 700 /root/.ssh
****************************************==
將公鑰identity.pub傳到linux伺服器,將ssh2相容格式的公鑰轉換成為openssh相容格式。
****************************************==
# ssh-keygen -i -f identity.pub >> /root/.ssh/authorized_keys# chmod 600 /root/.ssh/authorized_keys
****************************************==
3、使用securecrt登入伺服器首先設定登入模式為publickey,並選擇剛剛建立的公鑰檔案identity.pub。
4、重啟linux伺服器的ssh服務
****************************************==
# service sshd restart
****************************************==
去掉一下三行前面的注視:
rsaauthentication yes
pubkeyauthentication yes
authorizedkeysfile .ssh/authorized_keys
然後 修改 passwordauthentication yes 。
最後再重啟 ssh 服務即可。
原理
公鑰私鑰加密實質上是利用了不對稱加密的演算法的特性。公鑰用來加密,私鑰用來解密。a使用b的公鑰來加密要傳送的物件,再將它傳送
出去,而b可以使用自己的私鑰來解密,沒有這個金鑰是不可能解密的。這個簡單的模型就是不對稱加密的模型。只不過
使用公鑰的ssh登陸
過程比這個要複雜一些,因為它裡面包括了生成會話金鑰。
會話金鑰的作用是加了加密在一次客戶端與伺服器端會話中所有傳送的訊息。
因此,一次登陸包括了兩個大的步驟:
校驗會話金鑰和認證。
會話金鑰校驗過程:
1.伺服器將自己的公鑰和會話 id
(個人猜測這裡其實是可以使用請求的客戶端的公鑰進行加密的。客戶端請求登陸的時候雖然不需要指
定密碼,但還是要指定使用者名稱的,將此使用者名稱傳送到伺服器端後,伺服器端就可以據使用者名稱拿到對應的公鑰檔案。
root使用者的在 /root/.ssh資料夾下,
檔案的名稱由
/etc/ssh/sshd_config 引用的名字決定,一般為 authorized_keys,普通使用者,如 lzh ,在 /home/lzh/.ssh資料夾下)
2.客戶端接受到了伺服器公鑰和會話 id 後,根據特定的會話金鑰生成演算法(這裡注意不要混淆,這裡的生成演算法不是前面的公鑰私鑰生成算
法),生成乙個會話金鑰,並使用伺服器的公鑰將這個會話金鑰加密(設為 q )併發送到伺服器端。
3.伺服器端接受到了 q 後,用自己的金鑰解密之,至此,伺服器和客戶端之間的會話金鑰校驗過程完畢。以後每一次該客戶端與伺服器之間
的通訊都會使用 q 加密。
認證過程:(緊接上面的校驗過程)
1.伺服器隨機生成乙個數字,或字串,設為 x ,使用伺服器上已經存放好的客戶端的公鑰將 x 加密,傳送到客戶端。
2.客戶端接受後使用自己的私鑰解密得到 x ,計算 q + x 的 md5碼傳送到伺服器端,而伺服器端也作這樣的計算,看兩者結果是不是一樣,
以此為據判斷登陸成功與否。
非 root 使用者使用公鑰登陸時必須要注意以下幾點:
1.使用者的 .ssh 資料夾的 own 屬性要改為該使用者,且資料夾屬性改為 700 ,因為可能操作時是由 root 為他建立的這個資料夾
2.拷貝到 .ssh資料夾下的 authorized_keys 的 own 要改為 該使用者,同時也是防止是由root拷貝而來的,還要將檔案屬性改為 600.
SecureCRT公鑰登陸配置
建立公鑰 生存公鑰名字可以自定義生成的.pub為公鑰 我這裡設定的是普通使用者lijq使用的ssh2協議,在linux伺服器執行如下操作lijq 192 168 2 222 mkdir home lijq ssh 將剛才生成的.pub檔案上傳到伺服器,我這裡已經root連線上了所有直接用rz上傳即可...
Linux SSH 使用公鑰免密碼登陸
情景 a要通過ssh連線到b。步驟 1 在a上執行 ssh keygen t rsa 2 先通過ssh連上b,然後在b上執行 ssh keygen t rsa 3 在a上執行 scp p ssh id rsa.pub home ssh authorized keys 即可。附無須ip和使用者名稱的方...
SSH 公鑰免密碼登陸
ssh 金鑰對總是成雙出現的,一把公鑰,一把私鑰。公鑰可以自由的放在您所需要連線的 ssh 伺服器上,而私鑰必須穩妥的保管好。所謂 公鑰登入 原理很簡單,就是使用者將自己的公鑰儲存在遠端主機上。登入的時候,遠端主機會向使用者傳送一段隨機字串,使用者用自己的私鑰加密後,再發回來。遠端主機用事先儲存的公...