SSH密鑰登錄讓Linux VPS/服務器更安全
隨著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遠程服務器生成密鑰:
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 如果不存在可以執行:service 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 root@www.0794baidu.com -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私鑰文件。
原創文章,謝絕轉載!
>>轉載請注明出處:VPS偵探 本文鏈接地址:http://www.0794baidu.com/security/linux-ssh-authorized-keys-login.html













@chuen05, 該域名無法解析,dns有問題或者域名沒有記錄
ssh root@服務器名字 -i /root/id_rsa 提示如下,怎么結局?
ssh: Could not resolve hostname qn.taotu8.net: Name or service not known