Linux SSH密匙登錄
最近整了一個騰訊雲服務器, 沒事倒騰倒騰。 說來慚愧做php程序員也好幾年了,一直都是寫寫代碼很少直接操作服務器,所以很多linux知識對我來說都挺新鮮的。一般碰到不會的問題都是通過網頁搜索來解決。這不,今天登陸服務器又碰到問題了,登陸進去後發現一條消息:There are 2906 failed login attemps since the last successful login. 我去一個嚇了個半死,難道幾天不見就有黑客攻擊我的服務器嗎。頓時心裏一陣懵逼,趕緊尋找解決方案,網上一搜發現大家都普遍碰到過這個問題,可以通過在服務器生成一對公鑰和私鑰來解決。
那下面我們就用系統的ssh-keygen工具來生成公鑰和私鑰:
step 1: 輸入命令 ssh-keygen
Enter file in which to save the key: 之後會提示密匙保存的路徑,我們直接按Enter鍵就好,不用修改。
Enter passphrase (empty for no passphrase): 接著系統提示你輸入passphrase密碼短語,為了安全起見我們最好設置一下,提醒一下密碼短語長度需大於4,否則無效
設置完密碼短語之後公鑰私鑰就生成好了,總共要兩個文件id_rsa,id_rsa.pub,保存到/root/.ssh目錄下。
step 2: 修改文件/root/.ssh/authorized_keys
這個文件一開始是個空文件,我們要把剛剛生成的公鑰復制到這個文件。使用這個命令:cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
接下來我們要開始修改ssh配置文件了,讓ssh程序知道驗證文件保存在哪
step 3: 修改ssh配置文件/etc/ssh/sshd_config
為保險起見,修改之前我們先備份一下這個文件:cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
現在可以修改文件了,
找到AuthorizedKeysFile行,把後面的值改為上一步authorized_keys文件的路徑。因為我們是默認安裝的,可以不用修改。如果不是我們就改成/root/.ssh/authorized_keys就好了。
找到RSAAuthentication和PubKeyAuthentication選項,都改為yes。
step 4: 重啟ssh服務
我們輸入命令: service ssh restart
就OK~
step 5: 下載私鑰文件到本機上
用ftp或sftp工具下載生成的私鑰文件/root/.ssh/id_rsa到本機,以便登錄的時候使用。
step 6: 在本機用windows程序puTTYgen生成登錄用的putty密匙文件
在本機運行puTTYgen程序,這個程序應該是隨putty一並安裝的。沒有的話就自行安裝吧,我也不是很了解。打開程序, 點擊 Actions > Load,選擇剛才從服務器下載的私鑰文件。不過選擇的時候這個文件可能識別不了,我們點擊All Files(*.*)的選項就行了~ 然後點擊save private key生成putty可以識別的私鑰文件。
step 7: 用私鑰文件實現ssh登錄
打開putty程序,在目錄Connection > SSH > Auth下選擇上一步通過puTTYgen生成的私鑰文件就可以登錄了。登錄的過程中系統會提示你輸入生成公鑰私鑰時設置的密碼短語passphrase。到這裏我們就差最後一步禁用root用戶和禁用密碼登錄了。
step 8: 禁用root用戶和密碼登錄
編輯ssh配置文件/etc/ssh/sshd_config文件,找到PermitRootLogin選項改為yes, 就可以禁用root用戶登錄了。之後找到PasswordAuthentication選項改為no,就實現了禁止使用用戶密碼登錄了。可以說通過禁用root用戶和密碼登錄,我們再也不用擔心被黑客破解SSH密碼登錄了。
寫的比較啰嗦,各位見諒~
參考: https://www.cnblogs.com/handongyu/p/6386789.html
Linux SSH密匙登錄