过期域名预定抢注

 找回密碼
 免费注册

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

  [複製鏈接]
發表於 2011-11-4 03:00:44 | 顯示全部樓層 |閱讀模式
隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。
( m5 X' E6 G. q' A8 C1 SLinux SSH登錄有兩種:
; _5 x! O( h3 y4 |% N  m1、使用密碼驗證登錄" X0 s* M' `: f) ]( J1 D
通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。
# z/ G; ]& Q2 Y: ~2 [' X  p' q4 f2、使用密鑰驗證登錄
, @1 H! f% e: d. E/ G2 N9 r/ O, y" H
* `! b" y* H; J
基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。一、生成密鑰
3 U  p7 H9 C9 U* t4 _因為puttygen生成的密鑰有問題可能會出現:「Server refused our key」,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。1、在Linux遠程服務器生成密鑰:登錄遠程Linux  VPS/服務器,執行:
2 T- ?' r! l) }- o" R7 [4 `( Q+ g# `7 w# f5 W6 T
root@vpser:~# ssh-keygen -t rsa //先運行這個命令5 z7 g- u! ], P
Generating public/private rsa key pair." x) Q& Y1 m' ]& ^8 i  q
Enter file in which to save the key (/root/.ssh/id_rsa):                   //直接回車# p. b2 y% F7 e# n' m
Created directory '/root/.ssh'.& S; I/ x" j* K* ~- A; A6 \
Enter passphrase (empty for no passphrase):                                    //輸入密鑰密碼
1 r* c- ^0 n* F( O" h5 mEnter same passphrase again:                                                                 //重複密鑰密碼
: o, i: U! V! j3 b& A" F- iYour identification has been saved in /root/.ssh/id_rsa.         //提示公鑰和私鑰已經存放在/root/.ssh/目錄下
3 r" r4 J$ }% d) o7 V5 s/ q" ]Your public key has been saved in /root/.ssh/id_rsa.pub.* H  P3 c' ]; u. P: [, Q
The key fingerprint is:5 e! G: Z' X" B! U
15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd [email protected]9 N; A: P' S* m* U! |
The key's randomart image is:8 ]$ ~' w: S9 s7 r( a- U
+--[ RSA 2048]----+$ q( G) n8 Z% D/ g  t" w1 V
|=&@Bo+o o.o      |' |) x5 D0 j3 V+ D2 v
|=o=.E  o . o     |+ K$ w' I4 Z: {. n
| .    .   .      |
: _! H" u1 L1 F6 Y0 ^" h|         .       |
8 o0 s2 a2 q8 u  n* i|        S        |
$ {) d4 p% N4 i( H+ F3 _( b|                 |
' Q; J0 g+ i# W) \& _; q% n- g/ Y. I1 G3 Z|                 |
0 c$ Q* A* E& {: t6 `' k( F|                 |$ I& T- B' a' @4 f7 J& n
|                 |
* X! T# ]5 X0 ^% G: S: W+-----------------+9 v; \- ^; N- H. D+ m3 t
root@vpser:~#
& h0 _5 O0 r# h: f將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。
7 A$ }% @3 u2 p3 ~7 H2、使用XShell生成密鑰
3 Q/ `! ?( C+ Q2 M2 h5 i1 QXshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。/ I* {9 l% B6 w% P) I8 S2 o
下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:
/ ], D% ~3 G* D" S' D- l# Y- o6 W& }) m3 a: r# {# `
6 w- t! a( e0 c3 O! t7 C; F$ m

2 K( B2 |; A- x% V; z/ v
& b6 \; o& c  W% l3 P: Z0 Y點擊Save as file將密鑰保存為id_rsa.pub。二、將密鑰添加到遠程Linux服務器
7 a4 E/ L/ Q7 [$ L# H4 ~  @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 修改權限。1 p2 k" T# b. R5 W, o
, c6 G& C  [, D0 Q& V
2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。
9 K, k# G$ G3 a  _, l! g0 k  x3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart三、客戶端測試使用密鑰登錄1、使用putty登錄
  T, d, p8 d7 pputty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:" `1 O7 }) P6 C5 @6 z+ u- q

# i* S$ t; b: V1 `1 I) E- t點擊「Save Private Key」,將私鑰保存為id_rsa.ppk
4 B# X8 l+ t% O) B運行putty,在Host Name填寫:root@主機名或ip
$ Y3 K" V( h. A2 l) l
+ N4 x6 q/ F' d6 C4 |4 \6 g8 \
& D8 L6 A/ {4 N+ s
) N* C: |! U7 v: F6 q& h如果設置了密鑰密碼,出現:Passphrase for key "imported-openssh-key"時輸入密鑰密碼。6 T2 G! ]4 M* Q" p5 z
如果設置沒問題就會登錄成功,出現用戶提示符。2、XShell登錄
) t: `* x$ O' A: P! p3 E運行XShell,選擇菜單File->New,按如下提示填寫:6 \. B. y, d% r1 c& w

0 z0 z3 `3 Q: @2 k" Q$ E; ^7 }1 M( {2 s
打開創建好的Session
9 U( Q) L) }' a. J5 W1 j; h7 x  h+ f& r# ]) ]3 ~! E$ g
5 `* j0 B, ^. y& a/ h
如果設置沒問題就會登錄成功,出現用戶提示符。3、Linux客戶端登錄測試3 v. @9 ]* S$ N* S! q
在Linux客戶端執行:chmod 600 /root/id_rsa 再執行:ssh [email protected] -i /root/id_rsa /root/id_rsa為私鑰文件,第一次鏈接可能會提示確認,輸入yes即可,再按提示輸入密鑰密碼,沒有問題就會出現用戶提示符。四、修改遠程Linux服務器sshd服務配置1、修改/etc/ssh/sshd_config 文件
8 ~0 H7 C  Z( D: w% X" @8 X9 U+ x將PasswordAuthentication yes 修改成 PasswordAuthentication no2、重啟sshd服務
( }0 k" `( p& s- `' ]2 YDebian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。3 y% y& a* v9 I: B9 x: m. o" |
ok,設置完成。
! j+ J$ V/ \; r' X# p( ~# [再提醒一下一定要保存好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 Z, E& n2 T: \2 O) a) Y3 a* B; M* p8 h/ W1 T2 s& [) Y8 Q7 N
回復 给力 爆菊

使用道具 舉報

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

本版積分規則

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

GMT+8, 2025-4-16 21:23

By DZ X3.5

小黑屋

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