PuTTY使用密鑰登陸到Linux

在Windows管理Linux服務器時,常使用putty登錄ssh進行遠程管理。默認登錄驗證方式爲密碼認證,該方式雖然簡單,但每次登錄都要輸入一長串的密碼,至關麻煩。並且,若是萬一把root容許登錄打開,還有可能被強力破解,致使嚴重的後果。html

   因此,一般建議用密鑰登錄驗證代替密碼方式,即簡單,又可靠。
1、爲何建議使用密鑰登錄
一般如今的Linux發行版都使用OpenSSH代替telnet、rsh等明文傳輸的終端服務。
以紅旗 DC Server 5.0爲例:
linux

引用安全

# rpm -qa|grep -E -w 'openssh'
openssh-clients-4.0p1-1.2AX
openssh-server-4.0p1-1.2AX
openssh-4.0p1-1.2AX服務器


而OpenSSH默認是同時支持密碼和密鑰兩種認證方式的。轉一個說明:

爲何要使用公鑰認證
一般,經過ssh登陸遠程服務器時,使用密碼認證,分別輸入用戶名和密碼,二者知足必定規則就能夠登陸。可是密碼認證有如下的缺點:
session

引用dom

a)用戶沒法設置空密碼(即便系統容許空密碼,也會十分危險) 
b)密碼容易被人偷窺或猜到 
c)服務器上的一個賬戶若要給多人使用,則必須讓全部使用者都知道密碼,致使密碼容易泄露,並且修改密碼時必須通知全部人ssh


而使用公鑰認證則能夠解決上述問題。
ide

引用工具

a)公鑰認證容許使用空密碼,省去每次登陸都須要輸入密碼的麻煩 
b)多個使用者能夠經過各自的密鑰登陸到系統上的同一個用戶
c)即便修改了對應用戶的密碼,也不會影響登錄
d)若同時禁用密碼認證,則只要保證私鑰的安全,不會受到暴力破解的威脅post


2、使用putty生成密鑰和登錄
根據公鑰認證的原理(見後面說明),認證雙方任何一方均可製做該鑰匙對,而且只要認證方有被認證方的公鑰信息,便可匹配成功。
這裏,咱們先以Windows上的putty登錄Linux服務器爲例說明。因此,該密鑰對由putty製做。
繼續前,請確保您已經把整個putty包都下載完:
官方網站:點擊
最新版本:0.60,我截圖的版本是0.55的。
本地下載:

下載文件

點擊這裏下載文件


其中包括:PuTTY、Puttygen、PSCP、Plink、Pagent 等工具。
一、使用puttygen製做密鑰
啓動puttygen工具,爲兼容OpenSSH密鑰,選擇「SSH2 RSA」
點擊在新窗口中瀏覽此圖片
單擊 Generate 按鈕,並使用鼠標在「key」框內移動,以得到足夠的隨機數據供生成密鑰使用:
點擊在新窗口中瀏覽此圖片
※期間,你會看到進度條上面有個提示「Please generate some radomness by moving the mouse over the blank area.」,意思就是讓你用鼠標在空白區域隨機移動。隨着鼠標在空白區域的移動,進度條會一直走下去。中止移動鼠標,進度條也就中止了。因此,那咱們要移動鼠標,直到進度條走滿爲止。
完成後的窗口以下:
點擊在新窗口中瀏覽此圖片
其中:

引用

Key comment:是註釋,不會影響密鑰的有效性,但可做爲本身用於區別其餘密鑰的參考;
Key passphrase 和 Confirm passphrase :用於保護私鑰,若是不輸入該信息,那麼任何人只要拿到該私鑰,便可無密碼登錄系統,很是危險;一般狀況下,我是建議你們輸入的,但這裏爲了方便說明,暫時留空,請看後面使用的說明。


隨後,點擊「Save private key」保留私鑰。
若是沒有輸入Key passphrase信息,會有警告:
點擊在新窗口中瀏覽此圖片
輸入私鑰的文件名:
點擊在新窗口中瀏覽此圖片
※公鑰信息能夠不用保留在本地的,puttygen能夠從私鑰獲得它,驗證時也不會用到。

二、修改openssh配置

修改/etc/ssh/sshd_config:

引用

ChallengeResponseAuthentication no  #關閉挑戰應答方式
UsePAM no  #不使用PAM認證


而後重啓sshd服務,緣由見:這裏

三、拷貝公鑰信息
上面密鑰信息窗口的「Key」框最後生成的就是公鑰信息:
點擊在新窗口中瀏覽此圖片
須要把該信息拷貝到Linux服務器的特定文件中:~/.ssh/authroized_keys
其中,「~」表示對應用戶的主目錄,以root爲例。
若.ssh目錄不存在,請建立它,並把公鑰信息寫入文件中:

# mkdir ~/.ssh
# chown 700 ~/.ssh
# vi ~/.ssh/authorized_keys
# chown 644 ~/.ssh/authorized_keys


※請務必留意:文件和目錄的權限問題,用戶必須是將要進行認證的用戶,而權限必須是0644,也就是禁止其餘人對該文件寫入信息。(不然,某些有心人把本身的公鑰寫入這裏,他也能夠無密碼進來了)
由於,一般umask是0022或0002的,因此請使用chown和chmod修改成對應的權限咯。


四、使用putty使用密鑰登錄

對putty進行一些簡單配置,便可使用密鑰登錄Linux服務器。
選擇Connection-SSH-Auth,在「Private key file for authentication」輸入密鑰的路徑:
點擊在新窗口中瀏覽此圖片
而後在Connection的「Auth-login username」輸入登錄的用戶名,例如root:
點擊在新窗口中瀏覽此圖片
◎Putty 0.60 版本在Connection-Data頁內。
而後點擊Open便可:
點擊在新窗口中瀏覽此圖片
若一切正常,則能夠在session中Save保存配置。

3、使用OpenSSH生成密鑰
密鑰既可以使用putty生成,也可用OpenSSH生成。
一、Linux下生成密鑰
運行:

引用

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):  <-密鑰路徑
Enter passphrase (empty for no passphrase): <-密鑰保護密碼
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa. <-私鑰
Your public key has been saved in /root/.ssh/id_rsa.pub. <-公鑰
The key fingerprint is:
17:28:4c:c3:e4:18:d4:c2:31:bd:be:a7:a9:d4:a8:48 root@mail.linuxfly.org


二、把公鑰信息寫入authorized_keys文件中
運行:

# cd ~/.ssh
# cat id_rsa.pub >> authorized_keys



三、生成putty的私鑰
因爲SSH的標準中,並無固定密鑰文件的格式。而Putty使用的私鑰格式和OpenSSH生成的有點不一樣,須要轉換一下。
a)把id_rsa傳到Windows機器上
b)使用puttygen的「Load」讀取id_rsa文件
點擊在新窗口中瀏覽此圖片
這裏也能夠從圖中的公鑰信息,與id_rsa.pub對比一下,應該是一致的。
c)點擊「Save private key」保留私鑰。
d)putty使用該新的私鑰登錄服務器便可。

 

4、注意事項
一、檢查OpenSSH服務端的配置

引用

OpenSSH的配置一般保存在:/etc/ssh/sshd_config
PermitRootLogin no  # 禁止root用戶登錄
StrictModes yes  # 檢查密鑰的用戶和權限是否正確,默認打開的
RSAAuthentication yes        # 啓用 RSA 認證
AuthorizedKeysFile     .ssh/authorized_keys   # 驗證公鑰的存放路徑
PubkeyAuthentication yes     # 啓用公鑰認證
PasswordAuthentication no    # 禁止密碼認證,默認是打開的。


說明:
a)若是StrictModes爲yes,而authorized_keys的權限爲664等的狀況,則驗證密鑰的時候,會報錯:

引用

bad ownership or modes for file /home/linuxing/.ssh/authorized_keys


b)若PasswordAuthentication設置爲no,則禁用密碼認證,配合啓動公鑰認證,是更安全的方式。

二、公鑰存放的路徑
Putty做爲客戶端是不須要使用公鑰的,而Linux服務端的公鑰是存放在:~/.ssh/authorized_keys中。
也就是講,若是登錄用戶的主目錄不一樣,存放的路徑是不相同的。
例如某用戶:

引用

$ echo ~
/home/linuxing
則密鑰在:
/home/linuxing/.ssh/authorized_keys


若你想使用同一私鑰,但不一樣用戶登錄服務器,則請保證公鑰信息已經寫入每一個用戶的驗證文件中咯。而且必定要注意驗證文件的用戶和權限不能搞錯哦。

三、Key passphrase密碼
若是你在保存私鑰的時候,輸入了Key passphrase密碼。其就會使用該信息對私鑰加密。這會帶來一個好處:就是萬一您的私鑰給盜走了,但若是小偷不知道該密碼,他也沒法使用該私鑰登錄服務器的。簡單來講,就是增強了安全性。
a)在putty使用這種私鑰登錄服務器的時候,就會有提示:
點擊在新窗口中瀏覽此圖片
只有輸入正確的密碼才能經過認證。
※這裏看上去和使用密碼認證方式登錄OpenSSH有點相似。但其實是徹底不一樣的。該
Key passphrase密碼是用於管理私鑰,避免私鑰被盜用的;而OpenSSH的密碼認證方式使用的密碼,指的是Linux服務器端的用戶密碼,即PAM信息。也就是說,即便你修改了PAM的密碼,但只要Key passphrase信息正確,你仍是能夠登錄到服務器上的。(由於使用它解壓出來的私鑰是沒變的)


b)若每次登錄都要輸入Key passphrase,明顯達不到咱們簡化登錄步驟的目的。在既要保證安全,又要簡便的狀況下,咱們可使用PAGEANT
PAGEANT的做用很簡單,就是在咱們輸入一次私鑰密碼後,把解密後的私鑰保存在PAGEANT中。
再次使用putty登錄的時候,PAGEANT就會自動的把解密後私鑰用於認證,這樣就不用咱們屢次輸入密碼了。而
當咱們退出PAGEANT的時候,會自動刪除私鑰,從新登錄的時候須要再次檢驗。實現「一次驗證,屢次使用」的目的。
打開PAGEANT,其會自動放入Windows右下角的任務欄中:點擊在新窗口中瀏覽此圖片
右鍵點擊後,選擇「View Keys」:點擊在新窗口中瀏覽此圖片
在彈出框中,選擇「Add Key」,輸入Putty的私鑰(.PPK),並會提示輸入Key passphrase:
點擊在新窗口中瀏覽此圖片
結果:
點擊在新窗口中瀏覽此圖片
直接選擇菜單的「Add Key」也能夠。
這時候,使用putty再次登錄服務器就不須要Key passphrase啦。
點擊在新窗口中瀏覽此圖片
◎其實,即便沒有Key passphrase的私鑰也能夠導入PAGEANT中的,這時候就能夠不用在Putty的配置文件中指定私鑰的路徑咯。也能夠達到必定的安全目的的。

c)若要修改Key passphrase,可使用puttygen從新Load私鑰,其會諮詢Key passphrase信息:
點擊在新窗口中瀏覽此圖片
輸入正確密碼後,便可修改,並保存新私鑰便可。是否存在或修改Key passphrase是不會改變公鑰信息的。

四、保存putty的配置信息

putty的配置信息是保存在Windows註冊表的,需使用下面的命令導出:

regedit /e PuTTY.config.reg "HKEY_CURRENT_USER\Software\SimonTatham\PuTTY"



五、使用DSA密鑰
默認配置下,OpenSSH就同時支持RSA和DSA兩種編碼的密鑰。只要在生成密鑰的時候選擇「DSA」便可。例如:

# ssh-keygen -t dsa


使用上和RSA是沒有區別的,把公鑰信息拷貝到驗證文件中便可使用。

5、公鑰認證的原理
所謂的公鑰認證,其實是使用一對加密字符串,一個稱爲公鑰(public key),任何人均可以看到其內容,用於加密;另外一個稱爲密鑰(private key),只有擁有者才能看到,用於解密。經過公鑰加密過的密文使用密鑰能夠輕鬆解密,但根據公鑰來猜想密鑰卻十分困難。
ssh 的公鑰認證就是使用了這一特性。服務器和客戶端都各自擁有本身的公鑰和密鑰。爲了說明方便,如下將使用這些符號。

引用

Ac 客戶端公鑰 
Bc 客戶端密鑰 
As 服務器公鑰 
Bs 服務器密鑰


在認證以前,客戶端須要經過某種安全的方法將公鑰 Ac 登陸到服務器上。
認證過程分爲兩個步驟:
一、會話密鑰(session key)生成 
客戶端請求鏈接服務器,服務器將 As 發送給客戶端。 
服務器生成會話ID(session id),設爲 p,發送給客戶端。 
客戶端生成會話密鑰(session key),設爲 q,並計算 r = p xor q。 
客戶端將 r 用 As 進行加密,結果發送給服務器。 
服務器用 Bs 進行解密,得到 r。 
服務器進行 r xor p 的運算,得到 q。 
至此服務器和客戶端都知道了會話密鑰q,之後的傳輸都將被 q 加密。
二、認證 
服務器生成隨機數 x,並用 Ac 加密後生成結果 S(x),發送給客戶端 
客戶端使用 Bc 解密 S(x) 獲得 x 
客戶端計算 q + x 的 md5 值 n(q+x),q爲上一步獲得的會話密鑰 
服務器計算 q + x 的 md5 值 m(q+x) 
客戶端將 n(q+x) 發送給服務器 
服務器比較 m(q+x) 和 n(q+x),二者相同則認證成功

6、參考資料
一份很是詳細的putty使用說明:http://docs.google.com/View?docid=ajbgz6fp3pjh_2dwwwwt
源地址打開很慢,我保存了一份:

下載文件

點擊這裏下載文件



http://blog.3gcomet.com/article.asp?id=215
http://blog.chinaunix.net/u/25686/showart_200821.html
http://tech.idv2.com/2006/10/21/ssh-rsa-auth/

原編輯文件備份:

下載文件

點擊這裏下載文件

相關文章
相關標籤/搜索