隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。
/ V5 C+ G5 A2 s- l9 cLinux SSH登錄有兩種:! U$ O! L& u) F3 l- y% O
1、使用密碼驗證登錄) e8 Z3 r, X* C
通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。
" v0 ^0 [5 G8 L4 x f* u7 X7 A; C9 ~2、使用密鑰驗證登錄7 H5 X' L9 }; Y- y! T R
: w& _2 T, A" x4 y
+ N, R6 @- \8 w6 ]
基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。一、生成密鑰
6 ?2 ?8 p6 ^; Z* a因為puttygen生成的密鑰有問題可能會出現:「Server refused our key」,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。1、在Linux遠程服務器生成密鑰:登錄遠程Linux VPS/服務器,執行:4 L6 m% J1 O/ N2 b( i3 i
( @' O" n+ z; o h- k( O, A" ^
root@vpser:~# ssh-keygen -t rsa //先運行這個命令) V" ^. J2 M- y. I
Generating public/private rsa key pair.2 b# ?3 \# H2 ]2 @$ K: @0 e( D
Enter file in which to save the key (/root/.ssh/id_rsa): //直接回車 h3 L! J ` _% ?
Created directory '/root/.ssh'.
: K! ]' Q5 F7 \' f4 B$ }- s2 M, jEnter passphrase (empty for no passphrase): //輸入密鑰密碼, P, b0 ~4 T' y, f `' y
Enter same passphrase again: //重複密鑰密碼6 D5 N4 n6 k2 }* C Q$ _
Your identification has been saved in /root/.ssh/id_rsa. //提示公鑰和私鑰已經存放在/root/.ssh/目錄下
2 B2 M' A$ A/ ]( M! t5 {Your public key has been saved in /root/.ssh/id_rsa.pub.
( ^0 u4 {: S( i% B/ YThe key fingerprint is:
1 O9 h* i) g9 Z0 v, P) y15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd [email protected]
) I6 r- z4 r* r( x' Q3 AThe key's randomart image is:: e, n, q8 Z1 R4 i) M3 h
+--[ RSA 2048]----+: w1 @: w. m3 e( a, b2 f, d) z
|=&@Bo+o o.o |
5 g9 s9 _7 k' \ z" V: `8 H9 S1 o3 ~|=o=.E o . o |
; T* L% Q( [) B2 A) N| . . . |/ x# c1 T/ T @+ \2 ?
| . |
: y7 C8 G& b7 r6 C| S |
8 E; U% ~' b; a| |" a Y7 O% Y2 a
| |
* y d9 J$ f, q: `! p# ~9 a3 v| |3 u& d, t I, J2 t/ d
| |* T# x3 }2 t! `# h/ j3 Q
+-----------------+3 Y u- n2 H2 C" [# ]6 ^5 p I
root@vpser:~#
6 _) S! v) i! N- A將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。$ |' w# m6 }& L; O9 q. u+ u$ O/ C
2、使用XShell生成密鑰
/ s* ^% o; P9 ^Xshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。5 _% c- p; m& u3 p+ B" ]
下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:
/ H: V$ A( p$ E/ m% ` - y, t; k, e* k

& O% e, x% {& r$ A4 x
[* x( Z' L, q s D! O; e) Q5 z ( S O. H% B4 i4 y+ ^ C, {2 h$ z
點擊Save as file將密鑰保存為id_rsa.pub。二、將密鑰添加到遠程Linux服務器) O; g! Q1 l k, i
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 修改權限。
: m8 u* o7 h# q" i j1 K3 Z+ r' l: n
2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。
- g% U- v& ?% X# c+ U! u7 V, A3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。三、客戶端測試使用密鑰登錄1、使用putty登錄
: y+ t- U1 ]) b5 I8 {. w% ^; cputty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:
# G# y* f/ B# m
7 K! k; }4 V( x6 d" i點擊「Save Private Key」,將私鑰保存為id_rsa.ppk
: _4 W$ o* h! c' D; s運行putty,在Host Name填寫:root@主機名或ip4 U7 v% l" Y6 K1 ]+ y

2 b$ }7 h, `: W a7 C ; M, v& Z6 x4 L0 U$ |

- {) k: u* l: J8 }: s0 v6 X: n如果設置了密鑰密碼,出現:Passphrase for key "imported-openssh-key"時輸入密鑰密碼。
6 C0 x# i. a6 |0 J1 H/ Q如果設置沒問題就會登錄成功,出現用戶提示符。2、XShell登錄
7 ^. d, Q' U6 U0 N運行XShell,選擇菜單File->New,按如下提示填寫:; F) [7 q7 Y" V

! k& s* Q+ E& E* b ( Q1 f) m! c! [# z9 j) X
打開創建好的Session
|% D1 p. f1 l
/ n6 w; l6 g/ X0 j
% t4 |- G" P4 [' i% I' m如果設置沒問題就會登錄成功,出現用戶提示符。3、Linux客戶端登錄測試
/ |1 j, z0 U1 q' D9 Z. W3 P在Linux客戶端執行:chmod 600 /root/id_rsa 再執行:ssh [email protected] -i /root/id_rsa /root/id_rsa為私鑰文件,第一次鏈接可能會提示確認,輸入yes即可,再按提示輸入密鑰密碼,沒有問題就會出現用戶提示符。四、修改遠程Linux服務器sshd服務配置1、修改/etc/ssh/sshd_config 文件) T$ [+ l O5 n* b" I# h
將PasswordAuthentication yes 修改成 PasswordAuthentication no2、重啟sshd服務4 r; G; Q8 }( J; h+ w
Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。
+ y( O$ _: q8 S8 V& J0 I- Qok,設置完成。
! s0 t S- x( Y% S再提醒一下一定要保存好Putty私鑰文件id_rsa.ppk或Linux服務器下載下來的id_rsa私鑰文件。 |
|