隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。, ?- ^+ e- Z3 z! x8 E. i. E+ W
Linux SSH登錄有兩種:8 K' a8 o6 Q# h1 n8 {3 g
1、使用密碼驗證登錄
4 L/ w' q5 m& C3 h" P5 U7 \6 F通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。
/ {& ~* S; v* n! `' u; f) H2 \2、使用密鑰驗證登錄
3 V2 g! f/ L+ b4 l _" U) R5 ]4 E5 W. Z
# I; e- Y+ u! `0 o/ x( m基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。一、生成密鑰6 w0 Q+ E& G- i
因為puttygen生成的密鑰有問題可能會出現:「Server refused our key」,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。1、在Linux遠程服務器生成密鑰:登錄遠程Linux VPS/服務器,執行:' p6 d7 d2 e- W$ _, W3 C
1 u% z0 ?7 ]# B0 Y* Q
root@vpser:~# ssh-keygen -t rsa //先運行這個命令
) R$ R3 d& Z; ~: V* Y1 ]* ]Generating public/private rsa key pair.
$ [" O' ~: p9 I. q+ d0 m3 yEnter file in which to save the key (/root/.ssh/id_rsa): //直接回車
+ u5 u. a' J* ICreated directory '/root/.ssh'.
% y! z1 a k7 q4 dEnter passphrase (empty for no passphrase): //輸入密鑰密碼
( Y# e& o0 Z$ l2 cEnter same passphrase again: //重複密鑰密碼
9 y2 F' v1 [1 s1 ZYour identification has been saved in /root/.ssh/id_rsa. //提示公鑰和私鑰已經存放在/root/.ssh/目錄下
5 w. ]$ |3 D5 aYour public key has been saved in /root/.ssh/id_rsa.pub.' h6 P! v5 _# z6 b. I! e
The key fingerprint is:* W' S/ M) p+ j/ Q x, b! j6 h
15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd [email protected]
2 I5 q* S _" \, Z, HThe key's randomart image is:
9 A$ q7 O" E6 W; ^' q( `0 C5 X2 m+--[ RSA 2048]----+
' ?2 [, }5 j3 \|=&@Bo+o o.o |
8 f7 V$ d4 Q" b m% F/ Q|=o=.E o . o |9 G& t$ q7 m8 f5 s
| . . . |
! v i3 E9 n# s7 M| . |. Q' u- h" ~5 M$ [) w1 ^. P( x8 c
| S |8 }- h' X- Y% U( q; b3 K7 ~
| |- R7 r q7 d1 x* W+ X5 q
| |8 m2 N7 Q' ]: W b# I$ ]' ^
| |$ ~, T+ u' F5 O. P( }0 b- r4 P& S i
| |8 R" o3 q2 N9 M& u
+-----------------+
' p3 f- [/ _- E* V" f/ ~root@vpser:~#
# X& z0 V: {; V將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。4 k! h4 J! E- p# \
2、使用XShell生成密鑰
4 I3 _3 a, `, M2 s. r- GXshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。
9 X: ~* I, z! u! F$ I# @0 E下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:
! k6 j5 C' y- n4 O![](http://www.vpser.net/uploads/2011/01/xshell-key-generation-wizard-1.jpg)
- S1 x ~# {& k![](http://www.vpser.net/uploads/2011/01/xshell-key-generation-wizard-2.jpg)
2 o: g: Y& H. g+ b G6 p![](http://www.vpser.net/uploads/2011/01/xshell-key-generation-wizard-3.jpg)
) F, M- D) o" q/ S% L) f 2 |! m3 K& T1 W+ I6 _6 @
點擊Save as file將密鑰保存為id_rsa.pub。二、將密鑰添加到遠程Linux服務器 D. g5 K( B8 C' w
1、用winscp,將id_rsa.pub文件上傳到/root/.ssh/下面(如果沒有則創建此目錄),並重命名為:authorized_keys(如果是在Linux服務器上生成的密鑰直接執行:mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys),再執行:chmod 600 /root/.ssh/authorized_keys 修改權限。
; a' ^* g0 h8 R. k9 |% P% [( |( n! v$ H! ~7 U
2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。. Q( O! `* @9 a
3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。三、客戶端測試使用密鑰登錄1、使用putty登錄 k7 S1 m8 B( w' e4 E) p
putty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:( T. S0 Q4 |3 ?# |; f2 ~
! @: h' _# u; @$ I$ J
點擊「Save Private Key」,將私鑰保存為id_rsa.ppk
5 x+ \. a# Z' s+ p+ s7 \: k/ C' C( C運行putty,在Host Name填寫:root@主機名或ip% ~+ y; c6 l* `3 D
0 A/ I# \4 W5 h- C: m& Z
![](http://www.vpser.net/uploads/2011/01/putty-2.jpg)
1 u9 z3 P6 P( D K4 _![](http://www.vpser.net/uploads/2011/01/putty-3.jpg)
9 y- x% A% {, k3 {! _. z如果設置了密鑰密碼,出現:Passphrase for key "imported-openssh-key"時輸入密鑰密碼。2 c) P9 n$ W2 S6 R" N; a4 t: `0 _
如果設置沒問題就會登錄成功,出現用戶提示符。2、XShell登錄3 K6 l' r9 h: o. O( V8 \8 ]
運行XShell,選擇菜單File->New,按如下提示填寫:% M, x5 H+ B4 E0 r7 `/ q
9 Q' r) C3 \. @, I
* `* Y+ z3 a$ D! `9 F
打開創建好的Session5 x1 \6 O9 B, e, T J5 q6 u
. k8 Q. U: Y; q7 O
![](http://www.vpser.net/uploads/2011/01/xshell-key-login.jpg)
7 @9 B9 V$ y* W1 a W$ a4 B如果設置沒問題就會登錄成功,出現用戶提示符。3、Linux客戶端登錄測試
* k, W5 [' Z8 G8 p5 V在Linux客戶端執行:chmod 600 /root/id_rsa 再執行:ssh [email protected] -i /root/id_rsa /root/id_rsa為私鑰文件,第一次鏈接可能會提示確認,輸入yes即可,再按提示輸入密鑰密碼,沒有問題就會出現用戶提示符。四、修改遠程Linux服務器sshd服務配置1、修改/etc/ssh/sshd_config 文件
; d, h6 P3 ~$ h7 I! n' R將PasswordAuthentication yes 修改成 PasswordAuthentication no2、重啟sshd服務! [( ?- n. e6 C
Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。& d) D0 K& u7 }9 a
ok,設置完成。$ g2 O& J$ O' f8 } o( N" T7 x/ G/ m
再提醒一下一定要保存好Putty私鑰文件id_rsa.ppk或Linux服務器下載下來的id_rsa私鑰文件。 |
|