下面以Windows環境下PuTTY爲例講解使用KEY認證的方法,Linux/UNIX下與此相似,服務器端環境爲OpenBSD。
首先,從下面的網址下載PuTTY的安裝包(for Windows):
http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe
下完後雙擊安裝,再也不贅述。這個軟件包自帶了下面幾個很是實用的軟件:
PuTTYgen:生成KEY;
Pageant:管理KEY;
PuTTY:SSH客戶端;
PSFTP:使用SSH上傳/下載文件。
下面就來實例講解用PuTTY的這幾個軟件對遠程主機進行KEY認證和管理的方法。假設咱們要在192.168.0.132這個遠程主機上使用young_king這個用戶名進行KEY認證和登陸。
1.生成KEY
啓動PuTTYgen,以下圖:
在密鑰長度欄輸入想要的密鑰長度,越大越安全。這裏以最大的2048位爲例,而後點「Generate」按鈕,會開始生成KEY,生成過程當中須要在下面的空白部分移動鼠標來生成隨機數。
KEY生成完畢後,你能夠輸入一些標識信息,以下圖:
還能夠在下面的passphrase框內輸入「保護碼」,注意要輸入兩遍。「保護碼」也就是密碼的意思,用來保密私鑰的,必定要記住這個哦!
都輸入完畢後,點擊下面的「Save public key」按鈕保存公鑰,以下圖所示:
而後點擊「Save private key」按鈕保存私鑰,以下圖:
這個私鑰最好不要保存在電腦上,咱們把它拷貝到U盤上,隨身帶着,這就是咱們的「KEY盤」。
要養成每個月更換「保護碼」的好習慣,更換「保護碼」仍然要用到PuTTYgen這個軟件,啓動後點擊「Load」,載入私鑰,從新輸入「保護碼」,再確認一遍,而後點擊「Save private key」保存便可!
2.啓用KEY
上面生成了公鑰和私鑰,咱們須要把公鑰上傳到遠程主機的用戶目錄中,就要用到PSFTP這個軟件了。啓動它,以下圖:
輸入命令:open 192.168.0.132
接下來,PSFTP會列出遠程主機上的RSA指紋以供識別,以下圖:
這個指紋能夠在遠程主機上輸入下面的命令查看:
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
請把這個指紋記在紙上,隨身攜帶,和遠程主機鏈接的時候就拿出來對比一下(這麼作主要是爲了防止鏈接被人劫持和指紋被僞造)。
若是上面PSFTP顯示的指紋和遠程主機上的不一致,那麼毫無疑問是僞造的了,直接回車斷開鏈接。若是相符,你能夠輸入「y」來保存這個指紋到本地計算機上(不推薦),或輸入「n」只是此次鏈接使用。
隨後PSFTP會讓你輸入登陸用戶名和密碼,並自動進入該用戶的根目錄,以下圖(以root爲例):
如今咱們要把第一步生成的公鑰上傳到遠程主機上(請把這個公鑰複製到C:\Documents and Settings\Administrator目錄先,若是你的Windows不是用Administrtor登陸的,就替換成你登陸用的用戶名)。輸入命令:put young_king,能夠看到,公鑰已經上傳到/root目錄了,見下圖:
PuTTY 生成的KEY並不能直接使用,須要轉換一下。用PuTTY登陸(此時上面修改的端口還沒有啓用,仍是默認的22端口),以root身份執行:
ssh-keygen -X -f /root/young_king > /home/young_king/.ssh/authorized_keys
這就把公鑰成功導入到young_king的目錄中了,就能夠被young_king這個用戶使用了!
導入成功後,要刪除多餘的公鑰:
rm /root/young_king
下面介紹幾個PSFTP經常使用的命令:
open xxx.xxx.xxx.xxx:打開遠程主機(xxx.xxx.xxx.xxx爲IP或域名);
put xxxxxxxx:向遠程主機上傳文件(該文件須要事先拷貝到C:\Documents and Settings\Administrator目錄);
get xxxxxxxx:從遠程主機下載文件(下載後保存在C:\Documents and Settings\Administrator目錄);
cd xxxxxx:進入遠程主機的相應目錄;
exit:退出PSFTP(也能夠點右上角的叉關閉,不過不推薦這樣作)。
更多的命令能夠參看PuTTY的幫助文件,這個幫助寫得不錯。
3.使用KEY登陸
咱們上面雖然修改了SSH的配置文件(/etc/ssh/sshd_config),但尚未啓用。輸入下面的命令啓用新的SSH配置,以便咱們用KEY登陸:
kill -HUP `cat /var/run/sshd.pid`
PuTTY提供了一個KEY的管理程序,上面已經提到,是Pageant,咱們使用這個程序來進行 KEY登陸。
啓動Pageant,它會自動縮小到任務欄的通知區域,右鍵單擊,選擇「Add key」,會彈出個對話框讓咱們選擇。插入上面製做好的「KEY盤」,並選擇保存的私鑰,會彈出個對話框讓咱們輸入「保護碼」,以下圖:
若是安裝PuTTY時選擇了讓Pageant關聯.ppk文件,則雙擊私鑰能夠自動啓動Pageant。
輸入在生成KEY時輸入的「保護碼」,私鑰就被導入到Pageant中了。再右鍵單擊任務欄通知區的Pageant圖標,選擇第一項「New session」,Pageant會自動啓動PuTTY,等待輸入遠程主機的相關信息,以下圖:
輸入IP(或域名)和端口號,點擊最下面的「Open」按鈕,PuTTY就會登陸遠程主機了。和PSFTP相似,會彈出個對話框讓你確認遠程主機的RSA指紋,以下圖。同理,指紋不一樣就表示鏈接被劫持或指紋被僞造,點「取消」斷開鏈接;指紋相同就點「否」,不保存主機公鑰到本地計算機。
隨後會讓你輸入用戶名,輸入「young_king」,看看,自動就登陸上去了!
前面更改SSH配置的時候,已經禁用了root遠程登陸和使用密碼登陸,只能使用KEY才能登陸進系統。想要維護系統的時候,就用這個KEY登陸,再su成 root。並且,須要上傳/下載文件的時候,就用PSFTP,全部的操做都在SSH鏈接下進行,還有KEY的保護,安全性不知道提高了多少倍!黑客想要破解真是難於上青天!