过期域名预定抢注

 找回密碼
 免费注册

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

  [複製鏈接]
發表於 2011-11-4 03:00:44 | 顯示全部樓層 |閱讀模式
隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。
" g5 g3 W/ c' {( m9 N* _3 ELinux SSH登錄有兩種:! u% c- x* W& M9 n$ `& z: o4 r
1、使用密碼驗證登錄
) z' @; b# f2 S! ~5 {通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。* ~; v. Q$ j9 {9 r9 }/ `
2、使用密鑰驗證登錄
- I* T1 |/ z0 l' m1 M1 f8 [3 h; o, u' i6 {

/ Z6 I" W: `' W, c: N, ^* o+ @基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。一、生成密鑰3 q! B- o: V* X/ X* E$ \( l# t
因為puttygen生成的密鑰有問題可能會出現:「Server refused our key」,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。1、在Linux遠程服務器生成密鑰:登錄遠程Linux  VPS/服務器,執行:
0 U: L: q, A1 d$ \8 ^& n( |% w0 h" m& f7 a* r4 B
root@vpser:~# ssh-keygen -t rsa //先運行這個命令1 }# Y' j$ K5 K0 V" K3 }
Generating public/private rsa key pair.
7 t6 _6 f! e6 hEnter file in which to save the key (/root/.ssh/id_rsa):                   //直接回車3 L4 ?% G$ S6 ]3 f0 w1 E$ a# a
Created directory '/root/.ssh'." x1 A5 B, \# j6 q! o, f
Enter passphrase (empty for no passphrase):                                    //輸入密鑰密碼! g6 B1 `# I+ J$ J  C
Enter same passphrase again:                                                                 //重複密鑰密碼
5 m/ |9 ~& S& T# @, A# Y6 ~% bYour identification has been saved in /root/.ssh/id_rsa.         //提示公鑰和私鑰已經存放在/root/.ssh/目錄下2 t0 r8 s3 {3 i- A- h7 P% o( M. X7 G
Your public key has been saved in /root/.ssh/id_rsa.pub.9 y) t$ n4 ]2 T! a5 e/ ?% z' q! H
The key fingerprint is:
: i7 }5 W+ B, F) g1 I+ P8 W15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd [email protected]# f. e( `( |0 `( u6 M! d
The key's randomart image is:
( h5 y0 Q3 l2 Y9 m; }+ h+--[ RSA 2048]----+
0 s, w5 V! L! s5 B* f3 _' T* [|=&@Bo+o o.o      |
/ o& H7 o# B) i1 Q- c6 k1 x( r& @|=o=.E  o . o     |
1 l2 E" K4 t; m3 x5 M! ~4 y| .    .   .      |+ A3 F( h3 V: }; }0 e9 Y: m
|         .       |
* Z% ~2 |; F! R7 N- L0 h|        S        |) S5 A$ Y8 v/ l+ W6 ?
|                 |. ^5 t% f6 p6 R( V4 T/ y2 n
|                 |' |) U3 t5 I- E" J* S  `
|                 |
( M( x$ P: T5 c|                 |8 Z8 z$ L# \' w5 h% w5 j
+-----------------+' Q8 u& x9 t& d  q; q+ x  s3 x
root@vpser:~#
" r- W4 h$ _8 q+ ]) x& R將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。
7 N+ u; ?" |! v* a$ Q; m2、使用XShell生成密鑰6 r: G% ]! \3 z+ `. X3 M% c
Xshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。3 |! W! A4 \, x. p' e. t
下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:: \5 \' ]9 g! C' ^2 {

5 q1 o$ L" S  O" _' J5 e. a1 r, D6 l: P! G
" k8 h" A+ j* N/ o
' f& \$ W1 R- D3 r" l# `* l; l2 d3 v7 \
點擊Save as file將密鑰保存為id_rsa.pub。二、將密鑰添加到遠程Linux服務器) @9 G" E* C$ u- Q. g
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 修改權限。! ~* e* {4 d9 U/ X, n+ l& R

" Y! Z- F# L5 |4 t/ j; g/ y% a2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。1 }0 J3 N  ^- t. t
3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart三、客戶端測試使用密鑰登錄1、使用putty登錄
: j( v+ w; r9 U% |! q: g9 hputty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:
) b" x9 B9 U' x2 t! e' Z) {2 v9 R2 \; u4 Z
點擊「Save Private Key」,將私鑰保存為id_rsa.ppk
% l* g  X% M5 n% F( E運行putty,在Host Name填寫:root@主機名或ip
2 L, {  m. u# k, n  a# l3 s: k5 o3 c2 M/ n3 F- m
) u2 T- z5 N3 Z5 G
" W) f) J" f# h8 j
如果設置了密鑰密碼,出現:Passphrase for key "imported-openssh-key"時輸入密鑰密碼。4 D' D. [$ t3 H% g0 {6 n
如果設置沒問題就會登錄成功,出現用戶提示符。2、XShell登錄
. ^% `2 ~2 P8 m  p  s, J運行XShell,選擇菜單File->New,按如下提示填寫:( [- l: k$ W7 h" U: d' b) k" u; \

6 |& J) m' p  k' Z8 h
1 C8 G) }2 D3 U5 ?0 ?$ {& _打開創建好的Session/ t" |8 T. }% e) c* c" _+ t& z' g

* Q, v! D9 ]- Y9 _" }) H6 D3 d5 n( e! u0 ?/ |
如果設置沒問題就會登錄成功,出現用戶提示符。3、Linux客戶端登錄測試! s# g7 M- L% D6 x7 {- N( \; 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 文件4 \+ ?/ C8 D' Z( G4 N& M5 H
將PasswordAuthentication yes 修改成 PasswordAuthentication no2、重啟sshd服務
% h# d) A/ V$ f. @" \* h6 V& @) U3 C/ RDebian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。
( Z- v. |- O! R5 r6 g1 [1 S6 jok,設置完成。
9 T0 L) p  e( a& h; s' ?& C再提醒一下一定要保存好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號端口為其它端口- l; M( B# t8 E& A& B5 a" @
4 @/ C, b- G! l% z
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

點基

GMT+8, 2026-3-13 09:01

By DZ X3.5

小黑屋

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