过期域名预定抢注

 找回密碼
 免费注册

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

  [複製鏈接]
發表於 2011-11-4 03:00:44 | 顯示全部樓層 |閱讀模式
隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。
" w& Y8 m, I. J- JLinux SSH登錄有兩種:8 o  L3 _. ?2 g
1、使用密碼驗證登錄& Z' i. N; Q( ~: b) C
通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。% E5 I; d9 a2 t4 _& a
2、使用密鑰驗證登錄
# M' O7 [/ l; u- S6 T7 ~4 i3 }& N/ h0 {( e1 ]

; Q6 t0 W8 b; P# e; F  m7 k6 m) L基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。一、生成密鑰5 T% I# y* q( _. l
因為puttygen生成的密鑰有問題可能會出現:「Server refused our key」,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。1、在Linux遠程服務器生成密鑰:登錄遠程Linux  VPS/服務器,執行:4 w$ y# ?6 ?7 M- S# W

# B8 ]5 F" Y5 {- H; l& m4 J9 z* Froot@vpser:~# ssh-keygen -t rsa //先運行這個命令
: G% ^; M, \3 p- H7 SGenerating public/private rsa key pair.: G5 T/ m/ {: @5 z" z- I% V
Enter file in which to save the key (/root/.ssh/id_rsa):                   //直接回車
% R& M9 L0 C4 M: ]Created directory '/root/.ssh'.2 B/ f: n& Y# }( y" C9 E
Enter passphrase (empty for no passphrase):                                    //輸入密鑰密碼
5 {0 U; i5 ~2 {Enter same passphrase again:                                                                 //重複密鑰密碼
; H3 h' _: b5 h! Q9 _; B, {Your identification has been saved in /root/.ssh/id_rsa.         //提示公鑰和私鑰已經存放在/root/.ssh/目錄下7 B# S( q: S: y4 V: z' q
Your public key has been saved in /root/.ssh/id_rsa.pub.
$ [6 Y: f" j3 t4 uThe key fingerprint is:0 V4 o) F* l/ Q" b5 \
15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd [email protected]$ m1 ~& h2 i0 g# i
The key's randomart image is:
) f9 B; }+ `& R1 V6 B9 n5 U; v4 x+--[ RSA 2048]----+) K) f6 n" k' b1 f
|=&@Bo+o o.o      |
% A3 V  L5 o% W" ?' ||=o=.E  o . o     |, `7 c; Y+ M; T( H, U2 W9 P
| .    .   .      |
- W: F) n' b" E4 [|         .       |
0 Z2 C8 b  K+ H, j6 @0 B- _9 G|        S        |
( l% {. i" i/ o/ J; b4 d2 w|                 |3 E' N9 m1 l- N/ S
|                 |# N( w# B  q1 ~: ]& `
|                 |$ V) k2 k1 L/ [
|                 |
2 G/ H" R. I" e# n: F; v! I+-----------------+4 A9 q3 L% Y( y5 x* ?6 r
root@vpser:~#3 i3 u" m/ [, e- n0 `+ o7 {; e$ ?, p2 T
將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。; J, \  _; Q6 o) n6 r
2、使用XShell生成密鑰
0 i7 W# N2 u+ u. F, J8 T7 t7 BXshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。
, w+ I' u' r! ?& g8 v下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:) E6 G/ s, b& h. O9 Z8 ?
  }) ~: E4 r" L7 H9 q! \
% H1 n; w  j/ \

& m5 g( w) ~8 q) R9 L0 x! r, h" \# ^
點擊Save as file將密鑰保存為id_rsa.pub。二、將密鑰添加到遠程Linux服務器
3 u0 n( e6 R( [$ D# m1、用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 修改權限。
$ z( H1 H3 V5 H  j+ k+ q& Z% l& @! f$ _1 l8 v# j+ ]% s: G0 {; M7 S
2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。" [( j# r4 B9 ~. t6 f$ b% g
3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart三、客戶端測試使用密鑰登錄1、使用putty登錄
5 |1 X9 u& V) d( f' y% v+ _" Vputty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:
. a6 h% f1 ~" @
$ t. A1 n1 U2 w/ l點擊「Save Private Key」,將私鑰保存為id_rsa.ppk
- j5 m. n! H9 l7 }" _  @3 c運行putty,在Host Name填寫:root@主機名或ip
8 x& M/ |5 i: M8 N; U1 h: }% _& V# @$ _7 S- x' Z$ F- v

. l. d: l$ W* p. O$ s: O/ S' Z- j. K
如果設置了密鑰密碼,出現:Passphrase for key "imported-openssh-key"時輸入密鑰密碼。2 Q2 d& ~" y* {6 O6 V' R9 f/ N( I
如果設置沒問題就會登錄成功,出現用戶提示符。2、XShell登錄2 F& e# l* |+ u1 k
運行XShell,選擇菜單File->New,按如下提示填寫:
% x5 B" z, n* C
; B& b, ^9 Q) C" p% J9 I) v
* b& D  O! J. z; e; C打開創建好的Session
$ E) R8 e5 b* ^  M2 Q
/ F9 I* _7 i; a7 ]  [. t6 Z' ?: M
& ?+ O5 Q5 X: |& Q& l( C如果設置沒問題就會登錄成功,出現用戶提示符。3、Linux客戶端登錄測試6 j+ H  \1 `$ a/ L0 |; 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 文件
  o  B- V" ~1 m+ {% t2 x& \將PasswordAuthentication yes 修改成 PasswordAuthentication no2、重啟sshd服務
* u, O3 [5 y. o+ X0 uDebian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。
0 r% _0 n  U* i6 ]ok,設置完成。* w, a* T% s  p' U: h4 F: v
再提醒一下一定要保存好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號端口為其它端口7 z4 }' F9 \: h5 N* e; c

% j' n4 {2 F6 B7 |+ J1 M2 _/ C
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

點基

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

By DZ X3.5

小黑屋

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