Putty通過SSH自動登陸

http://blog.csdn.net/ruixj/article/details/4198956

如果你打算在windows下訪問另外一臺裝有Linux的機子,那麼推薦使用putty (d當然你的linux必須已經安裝了ssh服務器才行。)
SSH提供兩種級別的安全驗證: 一是基於口令的安全驗證。只要用戶知道自己賬號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證用戶正在連接的服務器就是用戶想連 接的服務器。可能會有別的服務器在冒充真正的服務器,這存在着潛在的威脅。二是基於密匙的安全驗證。需要依靠密匙,也就是用戶必須爲自己創建一對公匙/密 鑰對,並把公用密匙放在需要訪問的服務器上。如果需要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求使用用戶的密匙進行
安全驗證。 服務器收到請求之後,先在服務器上用戶的主目錄下找到該用戶的公用密匙,然後把它和用戶發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密 匙加密“質詢”並把它發送給客戶端軟件。客戶端軟件收到“質詢”之後就可以用用戶的私人密匙解密再把它發送給服務器。

一、通過方式一:口令認證登陸
1、打開putty.exe
   1)、Session --> Host Name (填寫服務器地址或者域名,如:192.168.0.250s)
   如果遠程主機存在提示如下:
   login as: root
   
[email protected]'s password:
   正確輸入密碼後即可正常登陸遠程Linux主機
(注意:
     遠程Linux主機的/etc/ssh/sshd_config配置文件
     PasswordAuthentication 必須爲 yes
     修改後/etc/init.d/sshd reload #加載修改後的配置文件並生效
   )
二、通過方式二:密匙認證登陸
方案一:使用puttygen.exe生成的密匙
1、用puttygen.exe生成一對密匙
   1)、打開puttygen.exe,直接點擊Generate,鼠標在Key區空白的位置頻繁的晃動
       加快隨機數的產生,這樣幾秒鐘就可以生成我們需要的密匙
   2)、點擊Save public key->id_rsa.pub(保存密匙)
       因爲puttygen.exe生成的格式和Linux系統使用的key格式不同,需要對生成的數據作些簡單的修改:
       比如源數據:
       ---- BEGIN SSH2 PUBLIC KEY ----
       Comment: "rsa-key-gliethttp"
       AAAAB3NzaC1yc2EAAAABJQAAAIEAg2Nx1dBZBypLXY1S78plfmPmwlQj1Ckuoz8o
       4vAWjJfOy3i6t2+o7aZMbGN+yUbQY5ScyJu3bK7Wg3ZxXP6qps14J2CAXbdrT9VH
       2AA3FIOgbLHii7Bwmjkr5+hVYp7Vazm7cPsGpKnmCWihqX7rkQdY7xq3mOCJI3ry
       Nnfkrh0=
       ---- END SSH2 PUBLIC KEY ----
       修改成:(我使用的Linux主機名爲gliethttp)   
       ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAg2Nx1dBZBypLXY1S78plfmPmwlQj1Ckuoz8o4vAWjJfOy3i6t2+
       o7aZMbGN+yUbQY5ScyJu3bK7Wg3ZxXP6qps14J2CAXbdrT9VH2AA3FIOgbLHii7Bwmjkr5+hVYp7Vazm7cPsGpK
       nmCWihqX7rkQdY7xq3mOCJI3ryNnfkrh0= 
root@gliethttp 
      (注意:修改後的數據不能有回車換行)
   3)、將生成的id_rsa.pub拷貝到遠程主機gliethttp的/root/.ssh上
       重命名爲authorized_keys
       [root@gliethttp root]#cd .ssh
       [root@gliethttp .sh]#mv id_rsa.pub authorized_keys
       這樣sshd服務程序當接收到遠程客戶端的連接申請時會自動匹配.ssh/authorized_keys文件中的密匙
   4)、點擊Save private key->id_rsa.ppk(保存私鑰)
       如果安全級別不是很苛刻,可以不設置Key passphrase
2、打開putty.exe
   1)、Session --> Host Name (填寫服務器地址或者域名)
   2)、Connection --> SSH --> Auth (點Browse選擇剛生成的id_rsa.ppk)
   3)、open
   成功打開後出現如下提示:
   login as: root
   Authenticating with public key "imported-openssh-key"
方案二:使用Linux主機生成的密匙
1、生成密匙
   [root@gliethttp .ssh]#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:
   e4:9a:47:a7:b4:8a:0b:98:07:b8:70:de:6b:16:2c:0c 
root@gliethttp 
2、將/root/.ssh/id_rsa.pub改名爲/root/.ssh/authorized_keys
   [root@gliethttp .ssh]#mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
3、將私鑰id_rsa拷貝到遠程客戶端
   1)、如果遠程客戶端是linux,拷貝到遠程客戶端/root/.ssh/即可
   2)、putty作爲遠程客戶端在
       putty不能識別直接從服務器拷貝來的私鑰,需要使用puttygen.exe進行格式轉換
      (1)、打開puttygen.exe --> Conversions --> Import Key
      (2)、選擇拷貝過來的私鑰文件id_rsa
      (3)、Save private key->id_rsa.ppk(保存私鑰)
4、打開putty.exe
   1)、Session --> Host Name (填寫服務器地址或者域名)
   2)、Connection --> SSH --> Auth (點Browse選擇剛生成的id_rsa.ppk)
   3)、open
   成功打開後出現如下提示:
   login as: root
   Authenticating with public key "imported-openssh-key"
   
   ---------------------------------------------------------------
   如果我們只希望有私鑰的遠程客戶機才能通過ssh登陸本主機,那麼
   遠程Linux主機的/etc/ssh/sshd_config配置文件
   PasswordAuthentication 改爲 no
   修改後/etc/init.d/sshd reload #加載修改後的配置文件並生效
   這樣其他遠程客戶端如果沒有私鑰,那麼這些用戶連輸入密碼的機會都沒有,就會被本主機直接斷開
   ***************************************************************
   注意:
   如果putty.exe不能登陸遠程主機,請查看如下幾個選項是否符合:
   1)、遠程主機的防火牆是否關閉,通過如下指令關閉防火牆:
       [root@gliethttp root]#/etc/init.d/iptables stop
   2)、遠程主機是否啓動sshd,通過如下指令啓動:
       [root@gliethttp root]#/etc/init.d/sshd start
   ***************************************************************
   
   putty.exe和puttygen.exe工具下載地址:
   
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


------常見問題

我按照網上的說明做了公私鑰,然後把公鑰內容複製到ssh服務器的/root/.ssh/authorized_keys文件裏,客戶端putty裏設置私鑰,設置自動以root用戶名登錄,登錄的時候提示server refused our key。
sshd版本:openssh-server-3.6.1p2-33.30.1
/etc/sshd/sshd_config裏已經設置:

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

[ 本帖最後由 sailer_sh 於 2006-4-17 17:30 編輯 ]

 

 

iptables -F 試試

 

ssh -v 看你的詳細登錄過程!

 

 

搞定了,我不用putty keygen生成公/私鑰對,而是用openssh生成,然後把私鑰複製到win客戶端,再用putty keygen轉換一下就可以了。
感覺putty keygen生成的公/私鑰對並不被openssh識別。。。



-------ssh-keygen 的使用方法

ssh-keygen -b 密匙長度 -t 密匙類型 
密匙類型可以是:rsa1 (對應SSH1 RSA)、rsa 和 dsa (對應SSH2)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章