CentOS 7 配置免密码证书登录
服務器: CentOS 7
客戶端: Xshell 6
?
密碼登錄:
這對我們來說太熟悉了, 換句話說我們對密碼這東西太熟悉了, 幾乎隨處都會用到. 登錄只是密碼的一個應用場景之一. 但是密碼常見的風險在于, 一是可能泄露, 二是被破解的風險
?
證書登錄:
這里說的證書其實就是密鑰. 在非對稱加密中, 密鑰分為公鑰和私鑰. 私鑰, 即密鑰所有人持有. 公鑰則公布給他人. 公鑰和私鑰成對使用, 互相解密. 公鑰加密數據只能用私鑰解密; 私鑰加密則只能用公鑰解密(驗證)
?
證書登錄原理:
密鑰對生成后, 公鑰存儲于遠程服務器. 登錄時遠程服務器向客戶端發送隨機字符串, 客戶端以私鑰加密后返回服務器, 服務器再以公鑰解密. 解密成功則證明客戶端合法, 允許登錄
?
配置證書登錄
1. 登錄用戶:
首先在服務器生成公鑰和私鑰. 因為密鑰與登錄用戶是對應的, 所以生成的密鑰僅對當前用戶有效. 本次以whl用戶登錄
?
以whl用戶登錄, 并且當前路徑位于用戶的默認home目錄下
?
2. 創建公鑰私鑰:
ssh-keygen -t rsa
ssh-keygen是一個用來生成和管理ssh密鑰的工具
-t參數用于指定密鑰類型, 或者說加密算法. 本次使用rsa算法. 除此以外還有rsa1, dsa可選
?
執行命令后會提示輸入用于保存密鑰對的路徑. 默認位于/home/用戶/.ssh目錄下. 確認無誤則直接回車
?
提示目錄已創建, 同時要求輸入證書密碼. 該密碼用于客戶端使用證書時驗證(要不然把證書文件復制走了豈不可以隨便登錄了?), 與用戶登錄密碼沒有任何關系. 而且也有提示: 不想設密碼的話保留為空即可, 不輸入任何內容直接回車
?
然后要求再確認一次. 有密碼就重復輸入一次, 沒有密碼當然直接回車確認
?
密鑰生成成功, 并提示保存路徑, 以及打印密鑰指紋
?
3. 寫入公鑰
進入證書存儲目錄
?
將公鑰寫入authorized_keys. 目錄下多出一個文件authorized_keys
?
4. 設置權限
.ssh目錄權限為700, authorized_keys權限為600
?
5. 修改ssh配置文件sshd_config
該文件位于/etc/ssh目錄下
?
編輯該文件需要root權限. 切換為root用戶, 然后就可以編輯了
?
找到PubkeyAuthentication這項, 去掉前面的#注釋, 使其生效. AuthorizedKeysFile這項確保與剛才生成的文件路徑一致. 修改完畢保存并退出
?
?
最后重啟一下sshd服務
systemctl restart sshd
?
?
6. 下載私鑰
還記得home/.ssh下的三個文件不? 把私鑰id_rsa下載到本地
?
7. 配置客戶端
這里用的是Xshell 6
新建會話, 幾個常規項不變
?
用戶身份驗證一欄, 方法選擇 Public Key
?
輸入用戶名, 點擊瀏覽
?
隨后彈出的對話框中選擇導入, 選擇剛才下載的私鑰文件
?
?
導入后這里會顯示已導入的密鑰. 點擊選中, 確定
?
用戶密鑰欄下拉列表會顯示已導入的密鑰. 選擇對應該用戶的密鑰, 輸入密碼(無密碼則保留空), 確定. 會話創建完畢
?
雙擊剛創建的會話, 登錄成功
?
8. 關閉密碼登錄
到這一步為止證書登錄配置成功. 也就是說此時用戶名密碼, 證書登錄都可用. 我們也可以將密碼登錄禁用, 只允許證書登錄. 這個配置還是在前面用到過的SSH配置文件sshd_config中
編輯sshd_config
vi /etc/ssh/sshd_config
?
找到PasswordAuthentication這一項, 由yes改為no. 保存退出, 并重啟sshd服務
?
這時就可以看到, 第一(whl用戶)和第三個會話(root用戶)是以用戶名密碼登錄的, 已經無法登錄了. 而且password輸入框也不可用
?
這里禁止的只是遠程密碼登錄, 也就是SSH登錄. 本地輸入密碼切換用戶當然是不影響的
?
?
總結
以上是生活随笔為你收集整理的CentOS 7 配置免密码证书登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows处理回车和Linux,li
- 下一篇: 一文详解高精地图构建与SLAM感知优化建