隨著PHP越來越流行,Linux VPS/服務器的使用也越來越多,Linux的安全問題也需要日漸加強,如果你安裝過DenyHosts並設置過郵件提醒,你每天可能會受到數封DenyHosts Report將前來破解SSH密碼的IP加入/etc/hosts.deny。
Linux SSH登錄有兩種:
1、使用密碼驗證登錄
通常VPS或服務器開通後都是直接提供IP和root密碼,使用這種方式就是通過密碼方式登錄。如果密碼不夠強壯,而且沒有安裝DenyHosts之類的防止SSH密碼破解的軟件,那麼系統安全將存在很大的隱患。
2、使用密鑰驗證登錄
基於密鑰的安全驗證必須為用戶自己創建一對密鑰,並把共有的密鑰放在需要訪問的服務器上。當需要連接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求之後,先在該用戶的根目錄下尋找共有密鑰,然後把它和發送過來的公有密鑰進行比較。如果兩個密鑰一致,服務器就用公有的密鑰加密“質詢”,並把它發送給客戶端軟件(putty,xshell等)。客戶端收到質詢之後,就可以用本地的私人密鑰解密再把它發送給服務器,這種方式是相當安全的。
一、生成密鑰
因為puttygen生成的密鑰有問題可能會出現:“Server refused our key”,最好使用XShell生成密鑰或者在遠程Linux VPS/服務器生成密鑰。
1、在Linux遠程服務器生成密鑰:
登錄遠程Linux VPS/服務器,執行:
root@vpser:~# ssh-keygen -t rsa //先運行這個命令
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): //直接回車
Created directory ‘/root/.ssh’.
Enter passphrase (empty for no passphrase): //輸入密鑰密碼
Enter same passphrase again: //重復密鑰密碼
Your identification has been saved in /root/.ssh/id_rsa. //提示公鑰和私鑰已經存放在/root/.ssh/目錄下
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd [email protected]
The key’s randomart image is:
+–[ RSA 2048]—-+
|=&@Bo+o o.o |
|=o=.E o . o |
| . . . |
| . |
| S |
| |
| |
| |
| |
+—————–+
root@vpser:~#
將/root/.ssh/下面的id_rsa和id_rsd.pub妥善保存。
2、使用XShell生成密鑰
Xshell是一款Windows下面功能強大的SSH客戶端,能夠按分類保存N多會話、支持Tab、支持多密鑰管理等等,管理比較多的VPS/服務器使用XShell算是比較方便的,推薦使用。
下載XShell,安裝,運行XShell,點擊菜單:Tool ->User Key Generation Wizard,出現如下提示:
點擊Save as file將密鑰保存為id_rsa.pub。
二、將密鑰添加到遠程Linux服務器
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 修改權限。
2、修改/etc/ssh/sshd_config 文件,將RSAAuthentication 和 PubkeyAuthentication 後面的值都改成yes ,保存。
3、重啟sshd服務,Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。
三、客戶端測試使用密鑰登錄
1、使用putty登錄
putty使用的私鑰文件和Linux服務器或XShell的私鑰格式不同,如果使用putty的話,需要將Linux主機上生成的id_rsa文件下載的本地。運行putty壓縮包裡面的puttygen.exe,選擇Conversions->Import key選擇私鑰文件id_rsa,輸入密鑰文件的密碼,會出現如下界面:
點擊“Save Private Key”,將私鑰保存為id_rsa.ppk
運行putty,在Host Name填寫:root@主機名或ip
如果設置了密鑰密碼,出現:Passphrase for key “imported-openssh-key”時輸入密鑰密碼。
如果設置沒問題就會登錄成功,出現用戶提示符。
2、XShell登錄
運行XShell,選擇菜單File->New,按如下提示填寫:
打開創建好的Session
如果設置沒問題就會登錄成功,出現用戶提示符。
3、Linux客戶端登錄測試
在Linux客戶端執行:chmod 600 /root/id_rsa 再執行:ssh [email protected] -i /root/id_rsa /root/id_rsa為私鑰文件,第一次鏈接可能會提示確認,輸入yes即可,再按提示輸入密鑰密碼,沒有問題就會出現用戶提示符。
四、修改遠程Linux服務器sshd服務配置
1、修改/etc/ssh/sshd_config 文件
將PasswordAuthentication yes 修改成 PasswordAuthentication no
2、重啟sshd服務
Debian/Ubuntu執行/etc/init.d/ssh restart ;CentOS執行:/etc/init.d/sshd restart。
ok,設置完成。
再提醒一下一定要保存好Putty私鑰文件id_rsa.ppk或Linux服務器下載下來的id_rsa私鑰文件