轉載至http://blog.chinaunix.net/uid-9881170-id-348605.html
啟用密鑰 ssh登陸伺服器:
首先得生成一對密鑰,一把私有密鑰和一把公用密鑰,公用密鑰用于對消息進行加密,隻有擁有私有密鑰的人才能對該消息進行解密。把公鑰放到我們要遠端登入的主機(remote)上(~/.ssh/authorized_keys),專用密鑰放置到本地機(local)或是U盤。
認證過程中,romote接收到local的登入請求後,romote的sshd 會生成一個随機數,并用我們先前拷貝過去的公用密鑰對這個随機數進行加密,然後,sshd把加密了的随機數發回給正在local上運作的ssh程式,然後是local計算機對該随機數的解密,再發回給romote,通過後,romote則允許local登入了。
以SSHSecureShellClient-3.2.9為例
首先我們建立屬于你自己的公鑰和私鑰:
(1)SSH Secure Shell的Edit菜單àSetting菜單,找到Keys,然後Generate New..開始生成新密鑰;
(2)下一步(全部預設即可),選擇DSA吧(RSA也可以,但RSA和DSA差不多,DSA耗資源少點,其實這點資源消耗可以忽略不計);
(3)下一步,File,取個檔案名:zx-ssh,别的可以不填直接點“完成”,Passphrase寫了則每次連接配接時需要輸入,我喜歡連密碼都不輸;為了實作自動登入,passphrase為空,但這樣不安全,還是設定一個passphrase吧,如果你的ssh secure shell界面不關閉,輸入一是passphrase就可以一直好用的,有passphrase可以防止私鑰被人盜用;
(4)找到密鑰存放的目錄:我是windows7,在C:\Users\ZX\AppData\Roaming\SSH\UserKeys,有2個檔案:zx-ssh(私鑰,與公鑰一起存放到本地或複制到U盤,在沒有使用該過密鑰的機器上要通路伺服器,則需要導入密鑰:SSH Secure Shell的Edit菜單àSetting菜單,找到Keys,然後Import導入,往往在Import是,要求你輸入的是公鑰檔案名,沒關系,導入公鑰則私鑰也導入成功,在配置檔案夾中會自動生成2個檔案,就是導入的公鑰和私鑰;zx-ssh.pub(公鑰,上傳到伺服器使用者主目錄中,等待轉換格式,需要轉換為openssh格式才可以被伺服器識别);到此為止,windows這邊已經準備好了。
(5)伺服器端(我以freebsd為例),修改配置檔案:vi/etc/ssh/sshd-config
啟用ChallengeResponseAuthentication no #啟用此項才可以真正取消密碼驗證
啟用UsePAM yes
(6)将生産的公鑰(zx-ssh.pub),上傳到伺服器使用者主目錄(自己想辦法傳),複制到使用者主目錄下的.ssh目錄中,然後進行格式轉換(轉換為openssl格式):
cd /usr/home/使用者主目錄/.ssh/
ssh-keygen -X -f zx-ssh.pub>>.ssh/authorized_keys #轉換格式openss格式,并将公鑰導入到authorized_keys檔案中
chmod 0640 authorized_keys#設定權限,使該檔案僅允許屬主讀寫
rm zx-ssh.pub#删除上傳的公鑰,要不然留住也沒用
這裡要注意一個問題,就是這個linux主機如果有多個公鑰,要注意每個公鑰後面需要有個回車或是換行,不能将多個公鑰直接羅列在一行。
應該重新檢查一下你的authorized_keys的權限(640)。也可能要檢查.ssh目錄的權限,.ssh目錄應該對“組使用者”(group)和“其它使用者”(other)沒有寫的權限。運作下面的指令來取消“組使用者”(group)和“其它使用者”(other)對于.ssh目錄的寫權限(740):chmod go-w ~/.ssh(也可以chmod 740 ~/.ssh,一樣的)
搞定了!在我的/etc/ssh/sshd-config中共4條:
PermitRootLogin yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
Subsystemsftp/usr/libexec/sftp-server
以SecureCRT_SFX 6.61(目前網上最新版)為例,首先是建立自己的公鑰和私鑰:
(1)secureCRT軟體的獲得,securecrt 和 securesfx一個是ssh一個是scp,這兩個軟體是關聯的,在其首頁www.vandyke.com上scrt_sfx661-x86.exe包含這2款軟體(在crackteam.ws網站上可以找到注冊程式,你在網上也可以很好找到漢化版,這樣不好呀!強烈建議購買正版軟體)。
(2)首先是建立自己的公鑰和私鑰:
運作SecureCRT,工具à建立公鑰à采用DSA類型àPassphrase可以不寫,但我願意每次登陸時輸入這個,因為有這個Passphrase則私鑰被人偷走也不怕àKey length 我改成2048(長點安全點)à注意存放目錄和格式,請選擇OpenSSH Key format格式,這樣可以相容大多數的linux、freebsd伺服器,記住存放目錄à完成
(3)這樣在存儲目錄找到2個檔案,以我的為例:ZX_Identity(私鑰),ZX_Identity.pub(公鑰),私鑰自己留好,或複制到U盤,以備急需,公鑰直接傳輸到你的Unix、linux、freebsd伺服器上的~/.ssh目錄(使用者主目錄下的.ssh目錄),并執行cat ZX_Identity.pub >> ~/.ssh/authorized_keys将公鑰密文追加到認證檔案中,這裡要注意一個問題,就是同一個使用者名(假設是root),現在要設定多個公鑰,那麼在利用cat追加某個公鑰之前,一定要先vi ~/.ssh/authorized_keys看一下原有公鑰後面是否有回車,要確定新追加進來的公鑰沒有直接連在其他公鑰的行尾,新密鑰一定要在新的一行,否則,這些公鑰沒有分開,就不好用了。注意.ssh目錄的權限:chmod 740 ~/.ssh; chmod 640 ~/.ssh/authorized_keys;
(4)linux/freebsd等ssh伺服器端密鑰登入配置:
我以freebsd為例),修改/etc/ssh/sshd-config,
啟用ChallengeResponseAuthentication no #啟用此項才可以真正取消密碼驗證
啟用UsePAM yes
重新開機sshd服務:/etc/rc.d/sshd restart
一切都OK了!
如果更換電腦,需要導入私鑰,很簡單,在建立連接配接的時候,選擇SSH2的PblicKey,在其Properties中導入即可。