过期域名预定抢注

 找回密碼
 免费注册

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

  [複製鏈接]
發表於 2011-11-4 03:00:44 | 顯示全部樓層 |閱讀模式
隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。
. ^0 Z9 R7 V4 o$ w4 A8 ZLinux SSH登錄有兩種:" @2 n+ e) |6 V" f" m6 i. q
1、使用密碼驗證登錄
& K; ^9 C  X  R- n9 Z% I8 _0 y通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。
1 c- B3 G! {) f! r. d2、使用密鑰驗證登錄
! V4 o. T% T) ^4 M# U( b
5 \5 ]6 Y( V1 \

, l! {$ o* J4 }5 ?$ ~基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。一、生成密鑰
: U+ H, m. w& E5 P因為puttygen生成的密鑰有問題可能會出現:「Server refused our key」,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。1、在Linux遠程服務器生成密鑰:登錄遠程Linux  VPS/服務器,執行:" Y; _& n$ y6 t, Y& O5 J" w

+ X+ _$ `/ T5 w$ W7 }( qroot@vpser:~# ssh-keygen -t rsa //先運行這個命令! p# ^1 r( L9 n, ^9 K) Q
Generating public/private rsa key pair.
' M6 Q" a8 N0 }% I& [( lEnter file in which to save the key (/root/.ssh/id_rsa):                   //直接回車7 R6 r  s9 G+ `9 x" R
Created directory '/root/.ssh'.% J3 m3 q. {. E/ f) \  r; F
Enter passphrase (empty for no passphrase):                                    //輸入密鑰密碼
- p* ~. T2 W* J8 S& ~" r, sEnter same passphrase again:                                                                 //重複密鑰密碼
  V' O* q0 Y3 @$ h2 s( ZYour identification has been saved in /root/.ssh/id_rsa.         //提示公鑰和私鑰已經存放在/root/.ssh/目錄下
9 n: S/ N# J& s2 c9 [Your public key has been saved in /root/.ssh/id_rsa.pub.
* J  r4 W: m  [) Z9 P" U6 R6 xThe key fingerprint is:
! {/ @. V+ a+ U" b2 }9 V15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd [email protected]
2 U8 s. U0 t( M) e7 L) t/ q: NThe key's randomart image is:
0 M- u& Z: o) @" ]- N# b+--[ RSA 2048]----+
3 D( ~0 ~2 F2 V. n4 }1 B9 r|=&@Bo+o o.o      |; q1 e4 j: ]9 o1 [/ |
|=o=.E  o . o     |
8 \- ~( W5 M! r( w9 w; `| .    .   .      |
9 L' g  E3 ^9 ?! m4 ?|         .       |+ n5 o! y4 |5 ?2 {/ m$ h# j
|        S        |1 e5 N" ~# j) Y$ j4 O2 }9 s
|                 |& ]% @1 F/ ?8 t/ Z
|                 |
: r& b3 W: Q3 i' p|                 |. z* T2 K; [% I( D" x1 N
|                 |
3 N% o0 B5 @+ Q5 Y+ O+-----------------+# c( n$ Q1 h7 J) K7 o3 }# Q  H: [
root@vpser:~#
1 s$ p; _( M5 z8 K: C! ^' s將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。% H, n/ _6 ^5 h' r: a
2、使用XShell生成密鑰
+ Q1 k) [, A. J  o9 }2 O7 X* {% o- f" K3 zXshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。
6 g4 t" r9 z# E! e下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:
) G1 n  E: q) N' `9 p
7 b# s, J* ?4 t2 i, c$ B" x( }
: R; U) w" R  W7 v1 s7 [6 r8 I6 O
& R+ E9 e* ^! s) Q: y% |2 \/ o
2 h/ _  R) ]2 y$ F5 q6 o點擊Save as file將密鑰保存為id_rsa.pub。二、將密鑰添加到遠程Linux服務器
% ^: j8 d9 l4 B8 {- 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 修改權限。
' H, @  g/ {4 ~* R' N1 e, e1 \- m3 e2 ?8 F) h  H: Z
2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。
  K- T. R3 p. d; {% z6 l* @3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart三、客戶端測試使用密鑰登錄1、使用putty登錄
3 [8 {- I* k0 W* p2 L, i& X' \: Fputty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:' x! Q7 L; C- l' a. u/ P6 P
6 v# o+ F" p7 m  ]. r! g1 {* W
點擊「Save Private Key」,將私鑰保存為id_rsa.ppk7 j0 ?4 }) i3 O  E4 y- c
運行putty,在Host Name填寫:root@主機名或ip/ D4 h0 c  c: E6 G
7 R/ U  V  J" Z: r* @

4 M2 A0 `8 m& [# G9 L7 v$ z) D" O* H5 m; @9 n
如果設置了密鑰密碼,出現:Passphrase for key "imported-openssh-key"時輸入密鑰密碼。8 Y9 q" a3 Y: E1 b& b3 P
如果設置沒問題就會登錄成功,出現用戶提示符。2、XShell登錄
! b8 h$ |: g" ?3 B運行XShell,選擇菜單File->New,按如下提示填寫:' |8 n, G' H% b* M
. z" J1 P1 i. F! m

3 U. G7 e- w1 r0 r( _打開創建好的Session
; p" E7 |$ t$ Y+ b$ f, T0 A5 U3 a! ?7 b

; r6 o% \2 c% N6 g( s如果設置沒問題就會登錄成功,出現用戶提示符。3、Linux客戶端登錄測試
, n( Q8 l5 p& I3 _# _, T; K在Linux客戶端執行:chmod 600 /root/id_rsa 再執行:ssh [email protected] -i /root/id_rsa /root/id_rsa為私鑰文件,第一次鏈接可能會提示確認,輸入yes即可,再按提示輸入密鑰密碼,沒有問題就會出現用戶提示符。四、修改遠程Linux服務器sshd服務配置1、修改/etc/ssh/sshd_config 文件" N$ b) q& `4 a
將PasswordAuthentication yes 修改成 PasswordAuthentication no2、重啟sshd服務  Z. v. d  A5 P4 L
Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。
, }1 O9 J8 `" a, R- Wok,設置完成。
# D: i! B* b5 P8 w# K再提醒一下一定要保存好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號端口為其它端口) C* j0 L0 m" k) e( E# ?! G3 o

+ K: n  z+ }% R3 I5 q
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

过期高净值品牌域名预定抢注

點基跨境 數位編輯創業論壇

GMT+8, 2025-9-19 04:13

By DZ X3.5

小黑屋

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