利用Xshell实现非对称秘钥对安全登陆linux服务器(Centos、Ubuntu)
非對稱加密算法簡述:
對稱加密算法在加密和解密時使用的是同一個秘鑰;而非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個秘鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。
1、乙方生成一對密鑰(公鑰和私鑰)并將公鑰向其它方公開。
2、得到該公鑰的甲方使用該密鑰對機密信息進行加密后再發送給乙方。
3、乙方再用自己保存的另一把專用密鑰(私鑰)對加密后的信息進行解密。乙方只能用其專用密鑰(私鑰)解密由對應的公鑰加密后的信息。
在傳輸過程中,即使***者截獲了傳輸的密文,并得到了乙的公鑰,也無法破解密文,因為只有乙的私鑰才能解密密文。
同樣,如果乙要回復加密信息給甲,那么需要甲先公布甲的公鑰給乙用于加密,甲自己保存甲的私鑰用于解密。
非對稱加密與對稱加密相比,其安全性更好:對稱加密的通信雙方使用相同的秘鑰,如果一方的秘鑰遭泄露,那么整個通信就會被破解。而非對稱加密使用一對秘鑰,一個用來加密,一個用來解密,而且公鑰是公開的,秘鑰是自己保存的,不需要像對稱加密那樣在通信之前要先同步秘鑰。
為何要使用非對稱秘鑰對登陸服務器?
在linux終端輸入命令# lastb ,可以查看到有大量的外來ip嘗試連接linux終端,這是***嘗試暴力破解所致的,賬戶密碼較弱、使用默認的22端口等因素給服務器安全埋下隱患。下面通過修改ssh連接的端口號,禁止密碼驗證方式登陸,使用非對稱秘鑰方式登陸來解決這個問題。
利用Xshell實現非對稱秘鑰對登陸linux:
1)生成公鑰(Pubic Key)與私鑰(Private Key):
點擊菜單欄的工具->新建用戶密鑰生成向導。
雖然SSH2協議中RSA和DSA算法都可以使用,但是為了保險起見,我們一般都選擇RSA密鑰類型,這樣不論你使用的SSH協議是SSH1還是SSH2都可以使用;密鑰長度3072以上(位數越長越安全)。
正在生產秘鑰,直接下一步即可。
如果希望更安全可言設置秘鑰密碼,這里自己下一步跳過。
公鑰格式默認的SSH2-OpenSSH即可,保存文件備份好。
通過公鑰導出對應的私鑰文件,保持文件備份好。
xhell生成公鑰帶pub擴展名,xhell生成的私鑰不帶擴展名。
2)添加公鑰(Pubic Key)到遠程Linux服務器;
用戶home目錄下創建文件夾 .ssh(隱藏目錄,chmod命令權限設置700, ),通過filezilla上傳公鑰文件到用戶家目錄的.shh文件夾中,并修改名字為authorized_keys(權限設置600),或者.shh文件夾下建立authorized_keys把公鑰內容保持其中,保存。
修改sshd_config配置文件(編輯sshd_config時必須開啟允許RSA秘鑰)
vim /etc/ssh/sshd_config?
Port?...?#修改22默認端口號,ssh協議端口號被知道了很不安全 PubkeyAuthentication?yes?#啟用公告密鑰配對認證方式? AuthorizedKeysFile??%h/.ssh/authorized_keys??#設定PublicKey文件路徑 RSAAuthentication?yes?#允許RSA密鑰 PasswordAuthentication?no?#禁止密碼驗證登錄,如果啟用的話,RSA認證登錄就沒有意義了(TIPS:vim命令模式下輸入 /搜索內容 可以快速定位搜索,按n查找下一個,云服務器修改ip重啟ssh服務出現無法連接是因為配置安全組沒有設置默認安全組全部端口開放的設置,點選即可)
重新加載sshd服務(第一條指令centos,第二條指令ubuntu):?
#?systemctl?restart?sshd.service #?service?ssh?restart #??/etc/init.d/sshd?restart/stop/start/status3)客戶端載入私鑰(Private Key)登錄(關鍵!沒有這一步直接登錄會提示所選的用戶密鑰未在遠程主機上注冊的警告提示):
4) 最后驗證非對稱秘鑰登陸是否成功,賬戶登陸是否失效,自定義端口號是否正常連接,.ssh權限是否770(drwx------),authorized_keys權限是否設置為660(-rw-------),都沒問題后服務器登陸安全就做好了。
注:?
私鑰,在Xshell里也叫用戶密鑰?
公鑰,在Xshell里也叫主機密鑰
轉載于:https://blog.51cto.com/qq512430/1894330
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的利用Xshell实现非对称秘钥对安全登陆linux服务器(Centos、Ubuntu)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一个c++泛型函数(即模板)
- 下一篇: linux第二课