隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。' @0 k! ?- ?4 R; f; j' R$ l
Linux SSH登錄有兩種:# w8 S4 U+ J4 b3 k2 s7 x9 n
1、使用密碼驗證登錄
! t Q& _. @0 a6 x7 L% s通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。 V v) p" b/ e- p- ]
2、使用密鑰驗證登錄8 a$ Y( o; J- `5 R0 O3 G5 f7 h
. A8 K$ @& r- Q5 O9 S) V
% F: y2 L3 j; _基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。一、生成密鑰2 {# F; W) m1 q' j; F+ D' R4 z
因為puttygen生成的密鑰有問題可能會出現:「Server refused our key」,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。1、在Linux遠程服務器生成密鑰:登錄遠程Linux VPS/服務器,執行:7 g, e- w5 a6 ~; r: P
; w0 z* Q/ \. ~6 c7 y0 Z
root@vpser:~# ssh-keygen -t rsa //先運行這個命令
# G/ V6 k- O, K; ?; R3 u7 f. ~' R rGenerating public/private rsa key pair.2 Q* e( q1 \- U+ g# o
Enter file in which to save the key (/root/.ssh/id_rsa): //直接回車
7 z2 _1 q1 p& CCreated directory '/root/.ssh'.
$ n' ]: ?; W7 Q) q5 n2 a* {Enter passphrase (empty for no passphrase): //輸入密鑰密碼6 s0 S5 r9 u9 o
Enter same passphrase again: //重複密鑰密碼
. f+ v1 S* A& }8 oYour identification has been saved in /root/.ssh/id_rsa. //提示公鑰和私鑰已經存放在/root/.ssh/目錄下' [# k. O1 V- w% J. `8 D- Z
Your public key has been saved in /root/.ssh/id_rsa.pub.
% i- m9 d0 O( a( d7 D) YThe key fingerprint is:% T* ~: ~( }( o# X
15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd root@vpser.net
. p1 \. z/ Z8 @The key's randomart image is:
: c. l5 m4 j( g$ |* w! c4 d- u+--[ RSA 2048]----+
+ M# G' B/ ?5 q' q|=&@Bo+o o.o |
4 Y% M3 j# c0 {|=o=.E o . o |
. f; {* }$ w4 i" Q, M* v| . . . | s% Y c1 V2 @( J/ N
| . |! B4 Z) F: N0 H2 D4 x2 L3 y+ V% C
| S |# n& Q' x: N# L& c: [- E, V- b- b/ N
| |
% P& V* K2 I. g+ u' ]| |
$ ^8 @! H: h! S3 M$ V, U| |+ q+ W3 \- `/ T! {0 m
| |, L. R, A( ?# d, i5 p( D- w
+-----------------+! ?9 I1 x* s& ~& w6 o3 U, h
root@vpser:~#
3 F% Z% Q0 i' i- C0 k0 {, k將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。
/ }* C: U+ t6 l* m# X) Q; s. I2、使用XShell生成密鑰
6 e* k& h1 Z% \- h8 @Xshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。5 L- n: f% J: r% M
下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:6 `, X1 n4 n; h, o0 G2 c9 [( p
+ V2 _! L! O/ m9 \2 i0 V8 E
+ _! ~" ^6 B3 @' U- z
; b: {: {9 p% K- c
/ d* `* E' s4 F0 s& C
點擊Save as file將密鑰保存為id_rsa.pub。二、將密鑰添加到遠程Linux服務器) ?* X5 u# [4 b# N/ S* F
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 修改權限。
: O' e: _0 P$ m7 O' ?
5 U7 H% ^& g( h5 e1 C2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。7 [8 o$ K6 @ s, Y! o5 f
3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。三、客戶端測試使用密鑰登錄1、使用putty登錄5 `' {7 t# T) R% A& [
putty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:+ c( d: x1 Y" m8 @
- x8 b% }$ _3 F/ I7 F% z: Z7 M
點擊「Save Private Key」,將私鑰保存為id_rsa.ppk
4 @, W4 F! W* v. f2 v/ ^. Z運行putty,在Host Name填寫:root@主機名或ip$ E, {! c& O: m8 n# x+ b$ D* |( z

2 I! s* |: X4 _1 a9 w1 `! h2 D
1 {+ y; P; [2 R& N% r " @ `% b$ ?' @/ u W8 v; ?- d
如果設置了密鑰密碼,出現:Passphrase for key "imported-openssh-key"時輸入密鑰密碼。& g, P, f+ u6 n/ G
如果設置沒問題就會登錄成功,出現用戶提示符。2、XShell登錄& }( k# G" S. G4 Z/ j% _( F& p
運行XShell,選擇菜單File->New,按如下提示填寫:7 _8 y+ n5 ^2 Y4 R! D- C. m% s
T+ F- ?; U! g" m

& F* i5 _3 X+ X2 S1 {5 B: Q- T打開創建好的Session- k. C9 Q; b/ V- q1 r0 B

7 N; X+ a. U( g
) W$ g" e* A2 d* k如果設置沒問題就會登錄成功,出現用戶提示符。3、Linux客戶端登錄測試, t9 o; l1 B+ U+ ^; l& a
在Linux客戶端執行:chmod 600 /root/id_rsa 再執行:ssh root@www.vpser.net -i /root/id_rsa /root/id_rsa為私鑰文件,第一次鏈接可能會提示確認,輸入yes即可,再按提示輸入密鑰密碼,沒有問題就會出現用戶提示符。四、修改遠程Linux服務器sshd服務配置1、修改/etc/ssh/sshd_config 文件
9 W' E1 {! D. y9 i6 W將PasswordAuthentication yes 修改成 PasswordAuthentication no2、重啟sshd服務) S& @# H+ V" Q' U1 C6 [
Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。
: O$ j( m; |% Y1 k% h4 V U7 Ook,設置完成。* B. R" A4 K! Y* `3 X d
再提醒一下一定要保存好Putty私鑰文件id_rsa.ppk或Linux服務器下載下來的id_rsa私鑰文件。 |
|