过期域名预定抢注

 找回密碼
 免费注册

如何更安全的以SSH密鑰方式登錄Linux服務器/VPS

  [複製鏈接]
發表於 2011-11-4 03:00:44 | 顯示全部樓層 |閱讀模式
隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。/ y6 I! C0 R  Z
Linux SSH登錄有兩種:/ V4 X5 X2 H3 i# q8 @. e
1、使用密碼驗證登錄
& ]  o% A# M/ _9 U$ W通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。
) Q& R4 Z- g2 t2、使用密鑰驗證登錄( p' _: K4 w# x( I: o  t$ P
+ x! B1 @" x5 e

- e5 t2 d' m: y; i; Q( M9 b( q$ j5 v基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。一、生成密鑰; ?/ \% t" ?" e& n4 U  D/ ]
因為puttygen生成的密鑰有問題可能會出現:「Server refused our key」,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。1、在Linux遠程服務器生成密鑰:登錄遠程Linux  VPS/服務器,執行:
' e- [$ h2 ^4 a, e8 k( u1 s$ I% v
root@vpser:~# ssh-keygen -t rsa //先運行這個命令
* Y5 U. t: X7 ^# S) U6 K& PGenerating public/private rsa key pair.
  J) ~# A' u4 S$ d1 gEnter file in which to save the key (/root/.ssh/id_rsa):                   //直接回車& y% f2 E5 r& a% ^' \2 P
Created directory '/root/.ssh'.$ B1 S5 ?7 d4 w- Q7 g
Enter passphrase (empty for no passphrase):                                    //輸入密鑰密碼
, p2 m* l9 K* UEnter same passphrase again:                                                                 //重複密鑰密碼
1 P2 J% F/ [, l- |/ _, yYour identification has been saved in /root/.ssh/id_rsa.         //提示公鑰和私鑰已經存放在/root/.ssh/目錄下
8 Q  G9 q! X+ HYour public key has been saved in /root/.ssh/id_rsa.pub.4 n7 E( L# ~1 p3 @, G! F  ~0 E& r
The key fingerprint is:
& v( O9 O% B2 u, X7 b" v3 G+ |2 i5 t, ]15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd [email protected]
$ Q. @! J" r# k3 S! \The key's randomart image is:
! z+ c8 u8 R, p, X) l+ g; {2 f+--[ RSA 2048]----+6 j" l6 [/ e# v' X  Y
|=&@Bo+o o.o      |% v, z: M5 \+ ^7 [
|=o=.E  o . o     |% |5 D6 M- v9 b
| .    .   .      |
% g& b/ S# W$ i% a|         .       |
  `" K- B3 u- m2 T2 o/ X+ f|        S        |
; V, @9 u" l/ W" d* t' d' b|                 |7 O7 o3 {, A0 K; O2 `* a; c$ H
|                 |2 z6 v+ J! O+ E1 i; \; J
|                 |/ e6 l+ Y3 Z- L0 H9 r1 x& `: L* n
|                 |
: `+ M8 N* |" o9 F, Q+-----------------+0 n& g7 t2 K+ S; |$ K2 G; H9 G
root@vpser:~#
( d3 P' S! d; A6 z* v將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。" u7 A; L) O: Q2 Q: K
2、使用XShell生成密鑰
5 s+ I; h) \+ }+ e8 a4 _! C) T  pXshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。6 {8 A8 z1 u  o7 w6 }9 o
下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:1 I9 ?6 ~$ K! E- z' X

9 [# J; F9 o8 a3 |: J) v( {) `& b" M0 ^. \$ W
" l+ F5 r# b4 w2 p* D4 N+ N  A5 a  x

7 i  r4 r  [" H' n  j點擊Save as file將密鑰保存為id_rsa.pub。二、將密鑰添加到遠程Linux服務器1 ?( h# B6 c+ o6 I1 N3 S3 d6 C
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 修改權限。
- [# x# W* u7 k9 F3 \: F
* K+ N6 `( j+ E& B8 N6 ?: a2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。. K2 p* y" S9 U2 n( `
3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart三、客戶端測試使用密鑰登錄1、使用putty登錄
. p: d6 m4 U1 Z( q* u5 vputty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:% ^; B/ m- ]2 T7 E
% R6 ?% k% R/ t( T
點擊「Save Private Key」,將私鑰保存為id_rsa.ppk
, A$ x& K# s0 b- B運行putty,在Host Name填寫:root@主機名或ip
* [8 J# ~) n7 N$ s: y6 K3 A
+ R4 C; K% w9 e
' [: M' s" }( c3 }% j" J: T" A" H2 Z" K% J1 M9 c" h9 f
如果設置了密鑰密碼,出現:Passphrase for key "imported-openssh-key"時輸入密鑰密碼。. s5 o5 g" q4 g- ?" t5 w8 J% g
如果設置沒問題就會登錄成功,出現用戶提示符。2、XShell登錄
. C6 y4 w+ G! X* w運行XShell,選擇菜單File->New,按如下提示填寫:' j% V1 m+ C6 I2 S

0 q  h& a% \. |, M0 X
- H; L0 h& x* W2 d+ r' |打開創建好的Session" X6 e6 M7 a  M- ?4 f* N4 J# V
2 c7 s" L3 d8 V7 L. N5 t7 m; _/ o

% f0 q7 r1 T6 X" x3 D6 }如果設置沒問題就會登錄成功,出現用戶提示符。3、Linux客戶端登錄測試  ^% v, w6 i( q' j0 C) S( C  J$ J' j
在Linux客戶端執行:chmod 600 /root/id_rsa 再執行:ssh [email protected] -i /root/id_rsa /root/id_rsa為私鑰文件,第一次鏈接可能會提示確認,輸入yes即可,再按提示輸入密鑰密碼,沒有問題就會出現用戶提示符。四、修改遠程Linux服務器sshd服務配置1、修改/etc/ssh/sshd_config 文件
# W' ?8 G' O, ]. {( X( t9 c將PasswordAuthentication yes 修改成 PasswordAuthentication no2、重啟sshd服務
/ I: G- K$ A# X' C) J" @) w. FDebian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。" o  |. w( u# i' P* H
ok,設置完成。* k) F# \9 r. b( }4 e
再提醒一下一定要保存好Putty私鑰文件id_rsa.ppk或Linux服務器下載下來的id_rsa私鑰文件。
發表於 2011-11-5 22:35:56 | 顯示全部樓層
這個教程很給力
回復 给力 爆菊

使用道具 舉報

發表於 2012-3-21 16:39:37 | 顯示全部樓層
學習了,真的很不錯。
回復 给力 爆菊

使用道具 舉報

發表於 2012-3-22 14:49:53 | 顯示全部樓層
比較不懂這個,沒設置過這麼多
回復 给力 爆菊

使用道具 舉報

發表於 2013-6-24 21:37:37 | 顯示全部樓層
如果要簡單一點的方法,就是修改ssh服務的默認22號端口為其它端口! F0 J# i, r  O# L( ]4 t
4 |5 V$ D' t  R* X: B
回復 给力 爆菊

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 免费注册

本版積分規則

點基

GMT+8, 2026-6-22 04:08

By DZ X3.5

小黑屋

快速回復 返回頂部 返回列表