CentOS7 SSH 使用證書登入
阿新 • • 發佈:2018-12-21
經常需要連線到伺服器時,每次都使用 ssh [email protected],會特別煩瑣,並且使用使用者名稱密碼登入也有一定的風險。這裡說一下通過證書登入到伺服器的方式。
1. 生成 SSH 金鑰和公鑰,並配置相應許可權
首先登入到伺服器,生成 SSH 的金鑰和公鑰
ssh-keygen -t rsa
將公鑰新增到 authorzied_keys 檔案中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
修改 authorized_keys 許可權為 644,.ssh 許可權為700
chown -R 700 ~/.ssh chown -R 644 ~/.ssh/authorized_keys
檢視修改後的許可權
ll -a .ssh/
總用量 20
drwx------ 2 700 root 4096 11月 13 09:00 .
dr-xr-x---. 3 root root 4096 11月 13 08:59 ..
-rw-r--r-- 1 644 root 408 11月 13 09:00 authorized_keys
-rw------- 1 700 root 1675 11月 13 08:59 id_rsa
-rw-r--r-- 1 700 root 408 11月 13 08:59 id_rsa.pub
2. 修改 ssh 配置
修改 sshd_config 配置檔案 vi /etc/ssh/sshd_config
# 允許金鑰認證
RSAAuthentication yes
PubkeyAuthentication yes
StrictModes no
# 公鑰儲存檔案
AuthorizedKeysFile .ssh/authorized_keys
注:第一次部署時在這裡踩了一個坑。出於安全形度考慮,在之前配置 ssh 時,設定了禁用 root 遠端登入 PermitRootLogin no
,這裡生成 root 證書登入時,最後導致登入失敗。如果是為 root 使用者生成登入證書,還需要確認 sshd_config 的PermitRootLogin 為 yes。
3. 下載私鑰進行登入
下載 ~/.ssh/id_rsa
scp [email protected]:/root/.ssh/id_rsa ~/
下載後確認其許可權是否為 600,如果不是進行調整 chmod 600 ~/id_rsa
若檔案許可權較大,會出現:
ssh -i id_rsa [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "id_rsa": bad permissions
許可權確認後,即可進行登入
# ssh -i id_rsa [email protected]
Last login: Tue Nov 13 09:10:17 2018 from 116.232.85.60
[[email protected] ~]#
使用證書登入成功!
4. 最後再對使用 ssh -i 指定證書檔案進行優化
在本地電腦的 .ssh 目錄下建立 config 檔案,編輯檔案內容:
Host domain
HostName hostname
User root
IdentityFile ~/id_rsa
儲存後,確認其許可權為600,若不是,須調整到600
再進行遠端登入時,使用 ssh domain
即可