隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。
; [4 D' M0 a) E# I( HLinux SSH登錄有兩種:
T9 \! Y5 a: x$ r1、使用密碼驗證登錄& @# m1 @2 c/ P- u i% O% Y
通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。; W0 K: d4 T4 e8 A$ W
2、使用密鑰驗證登錄( r9 I- u7 l4 g+ F
+ T& N* [1 u/ f$ W# H6 R5 s3 J
1 A* q+ [1 z r3 L2 ~
基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。一、生成密鑰
# C1 t+ V7 |3 K8 E7 }* Y因為puttygen生成的密鑰有問題可能會出現:「Server refused our key」,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。1、在Linux遠程服務器生成密鑰:登錄遠程Linux VPS/服務器,執行:
6 ~) Z+ l e( i( R! p
) K5 M9 x& L V5 j" Z$ Sroot@vpser:~# ssh-keygen -t rsa //先運行這個命令
* n/ [- Z" W: j2 ^) G2 r# l. sGenerating public/private rsa key pair.
( E6 ]0 P& d& |8 zEnter file in which to save the key (/root/.ssh/id_rsa): //直接回車9 ^& [1 o$ a0 U6 {5 i& k0 v
Created directory '/root/.ssh'." Y/ X( Y6 \: d
Enter passphrase (empty for no passphrase): //輸入密鑰密碼
T( o1 u. B) u' O+ ^8 H- AEnter same passphrase again: //重複密鑰密碼
, s9 j- Q& \8 |# y0 p& v, ^Your identification has been saved in /root/.ssh/id_rsa. //提示公鑰和私鑰已經存放在/root/.ssh/目錄下4 g' e6 W! {5 w( e! \- O5 q
Your public key has been saved in /root/.ssh/id_rsa.pub.
6 R2 g2 Y3 X8 V0 |3 fThe key fingerprint is:
- {+ y5 `" u) k15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd [email protected], `- q/ L0 ^# c0 C2 M$ t
The key's randomart image is:. ?) a7 M }4 \
+--[ RSA 2048]----+
1 J& h. v/ _5 m! x3 P|=&@Bo+o o.o |8 X0 s7 G/ ]2 y* d
|=o=.E o . o |
/ u6 O3 ]6 l2 K( r" ? G* K8 v. @| . . . |" h ?+ F/ B2 d$ C' W* ~
| . |4 W' ]7 ]" N7 D: f/ s$ m
| S |
$ w$ |7 i& ^! e# [| |: i% l) @: u& T8 p7 G$ B
| |
& D/ L% G6 { _| |
; r! \5 o* f( Q. S7 q; U| |. J; G1 f% u0 J# g! f/ U
+-----------------+
! H1 a' k; J* l4 ?1 G2 O2 n Lroot@vpser:~#
, x' H: a- R; M$ {將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。
2 f6 \5 [6 r; ]& k1 p6 W! [' o2、使用XShell生成密鑰
( c. s3 T3 b' N j* P8 J! g+ Q& aXshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。0 |" Q4 G# |5 j- G
下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:5 @4 S' h3 M d+ K! f& G
/ ]( b* o; w+ g* D
$ o! e' Q+ C+ Q% }' P5 f
: `) W8 _8 i P2 U) n1 g
- P- }8 T8 f6 g4 e& c
點擊Save as file將密鑰保存為id_rsa.pub。二、將密鑰添加到遠程Linux服務器6 m% r9 W* G/ Y6 \% U) B/ h
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 修改權限。
2 s& o( x% v1 M7 ~/ q* K0 y( a& l1 y- ]1 T, ?7 P) E
2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。) r/ i4 A) i; c- j5 f$ o7 }
3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。三、客戶端測試使用密鑰登錄1、使用putty登錄( V5 g5 v$ V: }( Y( p2 R5 R
putty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:
K6 Z G( c) k! s 2 F: K5 j J1 ]( H+ ~
點擊「Save Private Key」,將私鑰保存為id_rsa.ppk: Z6 C& ^% t5 i
運行putty,在Host Name填寫:root@主機名或ip+ ?, S) G" p, ~6 m0 d/ {
3 h( n; ?- o$ u3 Z
![](http://www.vpser.net/uploads/2011/01/putty-2.jpg)
* ?0 N, s& Q0 ]6 _3 c9 x4 b$ M9 Q$ D- B![](http://www.vpser.net/uploads/2011/01/putty-3.jpg)
! ^) w# w* D% B. t' X如果設置了密鑰密碼,出現:Passphrase for key "imported-openssh-key"時輸入密鑰密碼。
* C, d) Y- E$ e2 H" m" ^: E9 x如果設置沒問題就會登錄成功,出現用戶提示符。2、XShell登錄
8 d: X8 a; o/ e運行XShell,選擇菜單File->New,按如下提示填寫:4 P0 \4 B: q* ~" ]- e5 o: v+ B8 K2 s
![](http://www.vpser.net/uploads/2011/01/xshell-new-session-1.jpg)
* {+ D: o6 w4 y' r1 b' t3 m![](http://www.vpser.net/uploads/2011/01/xshell-new-session-2.jpg)
. g1 ^1 l- y9 [4 H, o' q/ Y打開創建好的Session
, y7 _1 f5 T$ P7 a' p![](http://www.vpser.net/uploads/2011/01/xshell-select-session.jpg)
2 P2 W* k4 {+ M4 V- p# L; ` . E" X) n& M9 V; ~$ u" Y
如果設置沒問題就會登錄成功,出現用戶提示符。3、Linux客戶端登錄測試
, a0 d; X+ U! k, U$ a在Linux客戶端執行:chmod 600 /root/id_rsa 再執行:ssh [email protected] -i /root/id_rsa /root/id_rsa為私鑰文件,第一次鏈接可能會提示確認,輸入yes即可,再按提示輸入密鑰密碼,沒有問題就會出現用戶提示符。四、修改遠程Linux服務器sshd服務配置1、修改/etc/ssh/sshd_config 文件( m# J, V$ S$ u) r9 ^
將PasswordAuthentication yes 修改成 PasswordAuthentication no2、重啟sshd服務
5 o3 H) b/ @- nDebian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。+ I( A6 m! n1 p; G
ok,設置完成。
" d* r1 h# H6 p; }6 m再提醒一下一定要保存好Putty私鑰文件id_rsa.ppk或Linux服務器下載下來的id_rsa私鑰文件。 |
|