SSH密鑰登錄讓Linux VPS/服務(wù)器更安全
隨著PHP越來(lái)越流行,Linux VPS/服務(wù)器的使用也越來(lái)越多,Linux的安全問(wèn)題也需要日漸加強(qiáng),如果你安裝過(guò)DenyHosts并設(shè)置過(guò)郵件提醒,你每天可能會(huì)受到數(shù)封DenyHosts Report將前來(lái)破解SSH密碼的IP加入/etc/hosts.deny。
Linux SSH登錄有兩種:
1、使用密碼驗(yàn)證登錄
通常VPS或服務(wù)器開(kāi)通后都是直接提供IP和root密碼,使用這種方式就是通過(guò)密碼方式登錄。如果密碼不夠強(qiáng)壯,而且沒(méi)有安裝DenyHosts之類的防止SSH密碼破解的軟件,那么系統(tǒng)安全將存在很大的隱患。
2、使用密鑰驗(yàn)證登錄
基于密鑰的安全驗(yàn)證必須為用戶自己創(chuàng)建一對(duì)密鑰,并把共有的密鑰放在需要訪問(wèn)的服務(wù)器上。當(dāng)需要連接到SSH服務(wù)器上時(shí),客戶端軟件就會(huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求使用客戶端的密鑰進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后,先在該用戶的根目錄下尋找共有密鑰,然后把它和發(fā)送過(guò)來(lái)的公有密鑰進(jìn)行比較。如果兩個(gè)密鑰一致,服務(wù)器就用公有的密鑰加密“質(zhì)詢”,并把它發(fā)送給客戶端軟件(putty,xshell等)??蛻舳耸盏劫|(zhì)詢之后,就可以用本地的私人密鑰解密再把它發(fā)送給服務(wù)器,這種方式是相當(dāng)安全的。
一、生成密鑰
因?yàn)閜uttygen生成的密鑰有問(wèn)題可能會(huì)出現(xiàn):“Server refused our key”,最好使用XShell生成密鑰或者在遠(yuǎn)程Linux VPS/服務(wù)器生成密鑰。
1、在Linux遠(yuǎn)程服務(wù)器生成密鑰:
登錄遠(yuǎn)程Linux VPS/服務(wù)器,執(zhí)行:
[root@vps ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa)://直接回車(chē)
Created directory ‘/root/.ssh’.
Enter passphrase (empty for no passphrase)://輸入密鑰密碼
Enter same passphrase again://重復(fù)密鑰密碼
Your identification has been saved in /root/.ssh/id_rsa.//提示公鑰和私鑰已經(jīng)存放在/root/.ssh/目錄下
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
1e:86:3c:2e:3a:5d:f2:8c:2b:e7:80:15:a5:93:85:e3 root@vps.clangcn.com
The key’s randomart image is:
+–[ RSA 2048]—-+
| .o |
| o= |
| .=. |
| Eo . . |
| . + S |
| o …+ . |
|. …*. . |
| oo+.o |
| .=o. |
+—————–+
[root@clangcn ~]#
2、使用XShell生成密鑰
Xshell是一款Windows下面功能強(qiáng)大的SSH客戶端,能夠按分類保存N多會(huì)話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務(wù)器使用XShell算是比較方便的,推薦使用。
下載XShell.rar,安裝,運(yùn)行XShell,點(diǎn)擊菜單:Tool ->User Key Generation Wizard,
密鑰類型選擇“RSA”,密碼加密強(qiáng)度,默認(rèn)1024位即可,
直接點(diǎn)擊下一步,
密鑰名稱可以自己定義,下面兩項(xiàng)為密鑰密碼,建議設(shè)置,設(shè)置后一定要記住,
生成密鑰內(nèi)容,保存密鑰到本地硬盤(pán),名稱為id_rsa.pub,完畢。
#p#
二、將密鑰添加到遠(yuǎn)程Linux服務(wù)器
1、用winscp或SFTP,將id_rsa.pub文件上傳到/root/.ssh/下面(如果沒(méi)有則創(chuàng)建此目錄),并重命名為:authorized_keys(如果是在Linux服務(wù)器上生成的密鑰直接執(zhí)行:
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
再執(zhí)行:
chmod 600 /root/.ssh/authorized_keys
修改權(quán)限。
2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 后面的值都改成yes ,保存。
3、重啟sshd服務(wù),
Debian/Ubuntu執(zhí)行
/etc/init.d/ssh restart
CentOS執(zhí)行:
/etc/init.d/sshd restart
#p#
三、客戶端測(cè)試使用密鑰登錄
XShell登錄
運(yùn)行XShell,選擇菜單File->New,按如下提示填寫(xiě):
Name中輸入一個(gè)標(biāo)識(shí)名稱,Protocol選擇“SSH”,Host中輸入服務(wù)器的Ip地址或域名,如果修改過(guò)端口,請(qǐng)更改22為修改后的端口,
在“Authentication”標(biāo)簽中,選擇“Method”為“Public Key”,User Name中輸入Linux服務(wù)器用戶名,一般為root,User Key中選擇上面生成的key,點(diǎn)擊“OK”完成設(shè)置。
#p#
四、修改遠(yuǎn)程Linux服務(wù)器sshd服務(wù)配置
1、修改/etc/ssh/sshd_config 文件
將PasswordAuthentication yes 修改成 PasswordAuthentication no
2、重啟sshd服務(wù)
Debian/Ubuntu執(zhí)行
/etc/init.d/ssh restart
CentOS執(zhí)行:
/etc/init.d/sshd restart
ok,設(shè)置完成。
再提醒一下一定要保存好id_rsa私鑰文件。