Linux防健忘日誌No.52-Ubuntu 11.04 SSH 使用RSA公鑰技術登入


以往由SSH CLIENT端到SERVER端都需要打密碼

雖然最近換了XSHELL,很方便會幫你自動KEY密碼
但前幾天閒暇之餘還是跟竹竿格格請教了一下RSA認證

敘述一下CLIENT端跟SERVER端在RSA交涉的一個流程

首先是CLIENT端要產生私鑰跟公鑰,公鑰要上傳給SERVER,而私鑰要自己好好保存,不能讓其內容外流

然後SERVER接收到公鑰之後會交由SERVER管理員審核是否允許此交涉要求
如果接受,就會將此公鑰納入SV端

之後就可以自動驗證進行登入

接下來開始實作
 
 
先示範Linux Client連Linux Server的做法:
1.CLIENT端產生RSA公私鑰
ssh-keygen -t rsa

接著會在$HOME/.ssh下產生兩個檔案
分別是id_rsaid_rsa.pub

有.pub的顧名思義為public,是公鑰的意思,將其上傳到SV端,對應使用者的.ssh目錄底下(例如今天要利用RSA連到thkaw使用者,就是放在/home/thkaw/.ssh底下)

建議實務在上傳公鑰的時候,最好把id_rsa.pub改個名稱(ex:tempkey.pub),以免覆蓋到sv端底下那方可能已經產生的私鑰跟公鑰
 

 
並且要由SV端的管理者將其導入authorized_keys(注意名稱!!!)
cat tempkey.pub >> authorized_keys //(這條指令是在SV上處理)
之後如果有其他CLIENT端的公鑰(例如kevintempkey.pub)要加進來,可以在用cat kevintempkey.pub >> authorized_keys附加在authorized_keys
 
接著Client端要連到SV就打入ssh thkaw@123.231.123.231
如果你上面步驟都有做對,那就會跳出認證接受訊息,yes下去就可以直接登入成功了

如果失敗,就會直接叫你打密碼…

請回頭注意是否有打錯或少做的,注意私鑰權限要在600才ok

Windows上的SSH CLIENT連去的話,就要看是用甚麼CLIENT端軟體
XSHELL的話直接產生公鑰,丟到SV裡面去就可以直接連了(私鑰在軟體裡面會自動加密,不會像PUTTY另外存)

就是這麼簡單~~…另外還有一個非正規的作法
是sv端產生id_rsa(他自己的私鑰)
丟給client端,直接讓client端連

但這樣不正規且危險…,這個非正規作法在CentOS無法這麼做,Debian可以(但還是不建議這樣)

thx for:
竹竿格格

2 Comments

  1. (thunb up)
    版主回覆:(11/29/2011 08:07:33 AM)

  2. 打太快,是thunb"s" up…
    版主回覆:(11/29/2011 08:07:33 AM)

Leave a comment

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料