最近弄了個雲主機,每次上都有如下提示(各種被掃描和攻擊…)
Last failed login: Tue Dec 12 07:55:36 CST 2017 from 219.146.144.254 on ssh:notty
There were 14011 failed login attempts since the last successful login.
Last login: Mon Dec 11 09:23:25 2017 from 180.110.80.73
研究后發現配置ssh密鑰登陸並關閉密碼登陸可以解決這個問題.
以下內容為在Centos7下操作.
ssh登陸原理簡單說明:
公鑰相當於鎖,私鑰相當於鑰匙。
生成公鑰和私鑰,並把公鑰上傳到服務器。以后在客戶端登陸時,就可以使用私鑰來進行驗證。不再需要用戶名和密碼登陸 ,大大提高了服務器安全性。
-
生成ssh密鑰
首先確保服務器已經裝了ssh服務,不過現在linux服務器都自帶吧。
ssh-keygen -t rsa #這里使用rsa算法,-t用於指定加密算法
查看生成的密鑰.id_rsa是私鑰,id_rsa.pub是公鑰
ll /root/.ssh/
-
把公鑰存到默認ssh密鑰位置. 當前用戶/.ssh/authorized_keys
mkdir .ssh #如果沒有.ssh目錄,則需要創建
cat id_rsa.pub >> /root/.ssh/authorized_keys #將公鑰追加到keys文件中,注意是追加.因為keys文件中可能記錄了多個公鑰.
chmod 600 ./authorized_keys #將權限改為只有當前用戶可讀可寫,保證安全.
-
打開ssh服務器的密鑰登陸功能
修改SSH的配置文件/etc/ssh/sshd_config :
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
去調上面3行前面的#,保存后重啟SSH服務。
systemctl restart sshd.service #centos7
-
下載公鑰和私鑰到客戶機
必須兩個文件都下,且要放到一個目錄下.(有些ssh工具只要私鑰就行)
我這使用windows scp(ftp軟件)將密鑰文件下載到本機.
-
使用windows下的ssh客戶端配置密鑰連接服務器(所有工具都大同小異,我用的是免費的xshell)
新建一個會話,並選擇public-key的方式連接
瀏覽選擇剛下載的私鑰文件.確定.
登陸成功!
-
關閉密碼登錄
修改SSH的配置文件/etc/ssh/sshd_config,找到下面1行:
PasswordAuthentication yes
修改為:
PasswordAuthentication no
保存后重啟SSH服務。
systemctl restart sshd.service #centos7
再也不用看到登陸嘗試失敗的提示了, 完結!