CentOS7 SSH 使用证书登录

经常需要连接到服务器时,每次都使用 ssh user@hostname,会特别烦琐,并且使用用户名密码登录也有一定的风险。这里说一下通过证书登录到服务器的方式。

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

注:如果当前登录用户是普通用户,则需使用 chmod 调整权限

chmod -R 700 ~/.ssh
chmod -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 私钥文件,进行 ssh 登录
这里是在 Mac 的终端使用 scp 下载到 Mac 用户家目录下:

scp user@hostname:/root/.ssh/id_rsa ~/

下载后确认其权限是否为 600,如果不是进行调整 chmod 600 ~/id_rsa
若文件权限较大,会出现:

ssh -i id_rsa root@hostname
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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 root@hostname
Last login: Tue Nov 13 09:10:17 2018 from 116.232.85.60
[root@vm172-31-0-20 ~]# 

使用证书登录成功!

4. 最后再对使用 ssh -i 指定证书文件进行优化

在本地电脑的 .ssh 目录下创建 config 文件,编辑文件内容:

Host domain
	HostName hostname
	User root
	IdentityFile	~/id_rsa

保存后,确认其权限为600,若不是,须调整到600
再进行远程登录时,使用 ssh domain 即可

猜你喜欢

转载自blog.csdn.net/u013239054/article/details/84027557