使用口令认证在口令过多的情况下不方便记忆也存在口令被爆破的风险,使用密钥验证的方式不仅简单方便,也更安全。

使用ssh-keygen命令制作密钥对

生成密钥对
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PS C:\Users\zxw> ssh-keygen.exe
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\zxw/.ssh/id_rsa): C:\Users\zxw/.ssh/id_ECS #这里输入文件名及路径,因为已有密钥所以创建了新的密钥
Enter passphrase (empty for no passphrase): #这里输入密钥的口令,也可直接回车
Enter same passphrase again: #第二次输入
Your identification has been saved in C:\Users\zxw/.ssh/id_ECS.
Your public key has been saved in C:\Users\zxw/.ssh/id_ECS.pub.
The key fingerprint is:
SHA256:Cz4SWiUlH0JStesBGidrg77TJAjp6u9mvp4P8fh7NGg zxw@DESKTOP-M6KBE4B
The key's randomart image is:
+---[RSA 2048]----+
| .o=.+ |
| . = o |
| .o + + |
|o. * + . |
|= =.o = S |
|o+ =+E = . |
|..=oo.= o |
|...++. o |
|.oOBo+o |
+----[SHA256]-----+
查看生产的密钥
1
2
3
4
5
6
7
8
9
10
11
12
13
PS C:\Users\zxw> ls  .\.ssh\


目录: C:\Users\zxw\.ssh


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/1/28 18:39 1679 id_ECS # 这是私钥
-a---- 2020/1/28 18:39 402 id_ECS.pub # 这是公钥
-a---- 2018/7/14 11:23 1675 id_rsa
-a---- 2018/7/14 11:23 399 id_rsa.pub
-a---- 2020/1/28 16:42 2997 known_hosts

将公钥部署到服务器上

1
2
[root@iZbp1hb2inepg3yt5dswr8Z ~]# touch authorized_keys #创建授权密钥文件,用以存放公钥
[root@iZbp1hb2inepg3yt5dswr8Z ~]# vi authorized_keys #将公钥内容添加进去

配置ssh配置文件

sshd_config
1
vi /etc/ssh/sshd_config

按如下内容进行设置

#ssh公钥设置
1
2
3
AuthorizedKeysFile      .ssh/authorized_keys #即授权密钥文件,若之前创建的文件名与这里一致,则默认即可
RSAAuthentication yes #是否开启RSA身份验证
PubkeyAuthentication yes #是否开启公钥身份验证
重启ssh服务
1
[root@iZbp1hb2inepg3yt5dswr8Z ~]# service sshd restart
其他设置
1
2
PermitRootLogin yes #是否允许root用户登录
PasswordAuthentication no #是否禁用口令验证方式

使用密钥验证

使用windows自带的ssh客户端登录

1
ssh root@IP -i 私钥
1
2
3
4
5
6
7
8
9
10
PS C:\Users\zxw> ssh root@4.1.0.5 -i .\.ssh\id_ECS
Last login: Tue Jan 28 21:06:20 2020 from 125.118.191.182

Welcome to Alibaba Cloud Elastic Compute Service !

Last login: Tue Jan 28 21:06:20 2020 from 125.118.191.182

Welcome to Alibaba Cloud Elastic Compute Service !

[root@iZbp1hb2inepg3yt5dswr8Z ~]#