我想肯定有不少朋友在使用SecureCRT做為SSH的用戶端軟體,但都很少使用他的RSA/DSA加密功能吧,怎麼你還不知道RSA是什嗎?
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。
我們建立一個新連結,點擊屬性:
預設驗證方式是password,把他改成RSA,系統會彈出一個彈出框。
讓你確認是否使用RSA公匙密匙建立嚮導,當然選“是”。
接著下一步:
這一步填入你的保護密匙的密碼,這個密碼要記住哦,以後都要這個密碼,Comment就隨便填了。
下一步:
讓你選擇加密的位元,預設1024就行。
下一步:
這一步你動一下滑鼠,系統就會根據你滑鼠動的頻率自動產生公匙和密匙。
下一步:
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伺服器端了,如果串連正常的話應該會彈出一個對話方塊,讓你輸入密碼。
這裡只要輸入我們保護密匙的密碼就行了,完了就能順利進入。
還有一步設定,既然大家都已經成功使用了ssh的RSA功能,那麼就必須讓openssh只支援RSA驗證,否則既支援普通密碼又支援RSA就沒什麼意思了,根本沒把安全提高,所以我們有必要讓openssh只支援RSA驗證,如果還沒有成功使用RSA功能的朋友就不用看,還是先把上面的的先實現再說。
要實現openssh只支援RSA驗證方式,我們只要修改
vi /etc/ssh/sshd_config
設定
PasswordAuthentication no
好了,你現在再試試以前普通密碼驗證方式,應該是會彈出下面錯誤資訊。
大致意思伺服器只支援RSA的驗證方式,ok了。
以後就可以用RSA的公匙密匙訪問ssh伺服器了,不過你的密匙可要儲存好,反正我是儲存在我的隨身碟,隨身攜帶,一旦你的使用者丟了密匙,一定在伺服器端把它的公匙刪除,這樣即使那人獲得了密匙也上不去。
同樣,可以在伺服器端產生好了Key之後再傳回用戶端使用:
因為是在伺服器端產生的key,目錄結構會一併建好,關鍵是許可權問題不用擔心,都是預設的。很簡單,一看就懂:) Server端為solaris9內建的Open ssh
bash-2.05# sshd -o
sshd: option requires an argument -- o
sshd version Sun_SSH_1.1
Usage: sshd [options]
在伺服器上執行
shell>ssh-keygen -b 1024 -t rsa
passphrase可為空白也可以指定,指定的話用key方法登入時還需驗證passphrase
產生兩個檔案id_rsa(私密金鑰)和id_rsa.pub(公開金鑰)
shell>cd $HOME/.ssh
shell>cat id_rsa.pub > authorized_keys
如需要用多個pub key可以cat的時候直接追加,用>>
把檔案id_rsa和id_rsa.pub拷到本機,建立一個connect,把authentication的驗證順序中的PublicKey放到最先的位置。
開啟PublicKey驗證的properties頁,identity file選剛才從伺服器上傳下來的id_rsa,OK。登入就可以了。
註:伺服器上的id_rsa可刪除,這樣私密金鑰就只有自己有了,只要分發公開金鑰就可以登入遠端的伺服器了。