SSH,特別是 OpenSSH,是一個類似于 telnet 或 rsh,ssh 客戶程序也可以用于登錄到遠程機器。所要求的只是該遠程機器正在運行 sshd,即 ssh 服務器進程。但是,與 telnet 不同的是,ssh 協議非常安全。加密數據流,確保數據流的完整性,甚至安全可靠的進行認證它都使用了專門的算法。
然而,雖然 ssh 的確很棒,但還是有一個 ssh 功能組件常常被忽略、這個組件就是 OpenSSH 的 RSA/DSA 密鑰認證系統,它可以代替 OpenSSH 缺省使用的標準安全密碼認證系統。
OpenSSH 的 RSA 和 DSA 認證協議的基礎是一對專門生成的密鑰,分別叫做專用密鑰和公用密鑰。使用這些基于密鑰的認證系統的優勢在于:在許多情況下,有可能不必手工輸入密碼就能建立起安全的連接。
好了知道RSA和DSA是怎么回事了吧,至于里面的原理我就不講了,有興趣的朋友去看看公匙密匙的原理就行。其實不止SecureCRT支持RSA/DSA,其他ssh的客戶端軟件都支持類似的RSA/DSA,只不過好像不同軟件產生的公匙密匙好像不通用。我這里只是拿最典型的SecureCRT來說明RSA怎么使用來配合linux下的ssh服務
我的環境:Redhat9.0 openssh-3.5p1-6 SecureCRT 4.0
服務端openssh我們先不可以設置,等客戶端設置好后,我們再回過頭來設置ssh。
我們創建一個新鏈接,點擊屬性:(圖1)

默認驗證方式是password,把他改成RSA,接著系統會彈出一個彈出框(圖2)

讓你確認是否使用RSA公匙密匙創建向導,當然選“是”(圖3)

接著下一步:(圖4)

這一步填入你的保護密匙的密碼,這個密碼要記住哦,以后都要這個密碼,Comment就隨便填了
下一步:(圖5)

讓你選擇加密的位數,默認1024就行
下一步:(圖6)

這一步你動一下鼠標,系統就會根據你鼠標動的頻率自動產生公匙和密匙
下一步:(圖7)

RSA公匙密匙創建好后,會讓你保存,名字默認或者改名都行,后面大家只要注意SecureCRT只尋找密匙的路徑,你保證SecureCRT能找到你的密匙就行。
好了客戶端的工作完成。下面是linux服務端的配置了
把我們剛才建立的RSA公匙傳到你的服務器,默認名為identity.pub
然后在linux下操作,如果你的密匙是給linux用戶frank創建的,那么我們先在frank的宿主目錄創建一個.ssh的目錄
mkdir /home/frank/.ssh
chmod o+x /home/frank
chmod 700 /home/frank/.ssh
然后把公匙導到authorized_keys這個文件,因為我們是使用ssh1,如果是ssh2的那就是authorized_keys2
cat identity.pub > /home/frank/.ssh/authorized_keys
chmod 644 /home/frank/.ssh/authorized_keys
權限的設置非常重要,因為不安全的設置安全設置,會讓你不能使用RSA功能,大家如果調試的過程中,發現有找不到公匙的錯誤提示,先看看權限是否設置正確哦!
ok,現在服務器端也設置完畢了,你現在可以用SecureCRT的RSA驗證方式連接ssh服務器端了,如果連接正常的話應該會彈出一個對話框,讓你輸入密碼(圖8)

這里只要輸入我們保護密匙的密碼就行了。完了就能順利進入
還有一步設置,既然大家都已經成功使用了ssh的RSA功能,那么就必須讓openssh只支持RSA驗證,否則既支持普通密碼又支持RSA就沒什么意思了,根本沒把安全提高,所以我們有必要讓openssh只支持RSA驗證,如果還沒有成功使用RSA功能的朋友就不用看,還是先把上面的的先實現再說。
要實現openssh只支持RSA驗證方式,我們只要修改
vi /etc/ssh/sshd_config
設置
PasswordAuthentication no
好了,你現在再試試以前普通密碼驗證方式,應該是會彈出下面錯誤信息(圖9)

大致意思服務器只支持RSA的驗證方式,ok了
以后就可以用RSA的公匙密匙訪問ssh服務器了,不過你的密匙可要保存好,反正我是保存在我的U盤,隨身攜帶,一旦你的用戶丟了密匙,一定在服務器端把它的公匙刪除,這樣即使那人獲得了密匙也上不去:)
參考文檔
OpenSSH 密鑰管理 http://www-900.ibm.com/developerWorks/cn/linux/security/openssh/part1/index.shtml