前言:
linux除了通过密码验证远程连接服务器以外,还可以通过私钥的方式连接服务器,二者相比较,后者更安全,并且可以追根溯源,以下是配置过程
一、首先需要在自己的本地生成ssh-key密钥
1.1生成通过命令生成秘钥,创建文件
win+r(windows下)输入cmd,调出终端。
执行命令:
ssh-keygen -m PEM -t rsa -b 4096 -f C:\Users\SC\.ssh\ztest.pem
# C:\Users\SC\.ssh\ztest.pem 该路径是指存放生成文件后的存放路径,可自定义
# ztest.pem 的文件名称可自定义, 必须以.pem 后缀结尾
![](https://img-blog.csdnimg.cn/img_convert/8c92680472ef458a844fcfbc130d06d7.png)
下面是上图的解释
Enter passphrase (empty for no passphrase):
#密钥密码,输入需记住(安全)。也可不输,直接回撤。
1 Enter same passphrase again:
#再次输入密码后回撤
1.2命令之后,查看在本地生成的文件
![](https://img-blog.csdnimg.cn/img_convert/7a5d3db861b14d2aa2b1e70a33c4299e.png)
二、将用户下的的.ssh目录中的zyhtest.pem.pub公钥文件上传到服务器,或者也可打开此文件,直接复制内容到服务器上。
2.1服务器中执行命令创建秘钥:
执行命令如下:
ssh-keygen -m PEM -t rsa -b 4096 -f /root/.ssh/ztest2.pem
#/root/.ssh/ztest2.pem 表示存放生成文件的存放路径,可自定义路径
#/ztest2.pem 文件名称可以自定义 但必须以 .pem 结尾
![](https://img-blog.csdnimg.cn/img_convert/5ac46235a0bc4f5a97a4669903826350.png)
2.2 将本地生成的公钥上传到服务器中
2.2.1进入到生成的.ssh 目录下 ,并上传本地证书公钥
cd /root/.ssh
#该路径就是我们在2.1中 选择存储生成文件的路径下
示例图如下:
![](https://img-blog.csdnimg.cn/img_convert/840766a3d1ab47d99854d5ef8eac1a70.png)
1.选择本地需要上传的文件zyhtest.pem.pub
![](https://img-blog.csdnimg.cn/img_convert/044988127a954fc19ccd93b849067e18.png)
(本地需上传的文件)
2.上传到服务器的位置如下
![](https://img-blog.csdnimg.cn/img_convert/0f9bcec1983f436ba81ac6be267c8f44.png)
(上传到服务器的路径)
2.3需将当前上传公钥中的值加入到授权列表(authorized_keys)中
2.3.1如果没有authorized_keys这个文件就创建,命令:
touch authorized_keys
![](https://img-blog.csdnimg.cn/img_convert/e3c0edb86c00476ba0c1f8bfdb15d1d8.png)
2.3.2 将zyhtest.pem.pub 文件中的内容添加到 新创建的 authorized_keys 文件中
cat zyhtest.pem.pub>>authorized_keys
#zyhtest.pem.pub 文件名称,根据你们创建时的名称进行修改
zyhtest.pem.pub中的内容也可以直接复制粘贴到authorized_keys 文件中
2.2.3 查看是否添加成功
cat authorized_keys
![](https://img-blog.csdnimg.cn/img_convert/73ed71a588f74b669a937f7b0e7d34d8.png)
备注解释:
authorized_keys 中保存的可以有N个,数据来源于不同用户在本地生成的xxx.pem.pub 中的key,同时,也可以将服务器中的生成的xxx.pem.pub的key放到另外一个服务器中的authorized_keys中 这样就可以实现linux服务互相连接了
ztest.pem.pub 中的key可直接复制到authorized_keys 中
![](https://img-blog.csdnimg.cn/img_convert/f961d72c2f114df5a955eee08c7e39e8.png)
三、客户端通过私钥进行远程连接
3.1 新建ssh连接
![](https://img-blog.csdnimg.cn/img_convert/56df507952254fcdb7476862ae95ad65.png)
3.1.1私钥 点击”浏览”,再点击导入
![](https://img-blog.csdnimg.cn/img_convert/3756841292ae4ce5bef0794a1fd828af.png)
3.1.2浏览选择私钥
![](https://img-blog.csdnimg.cn/img_convert/c1d841cbf82d4bc4af07dd76748c556c.png)
3.4 点击保存即可。
3.5 再次双击即可登录成功
![](https://img-blog.csdnimg.cn/img_convert/3a4c79ea0acf4047b0734ceefa617a42.png)
四、开启秘钥登录后,就需要关闭密码连接,
操作如下:
4.1编辑sshd_config 配置文件
4.1输入命令:sudo vim /etc/ssh/sshd_config
![](https://img-blog.csdnimg.cn/img_convert/817869cb522b4b8e8caad80247160ab4.png)
4.2修改如下,允许秘钥连接,关闭密码登录
PubkeyAuthentication yes #允许秘钥登录
PasswordAuthentication no #不允许密码登录
如果默认被注释,就取消注释即可;
4.3最后:wq 保存退出,并重启ssh服务
4. 4重启命令:systemctl restart sshd
五、结束
在2.1 步骤,服务器中创建秘钥 这里 为了更加安全起见,可以新建一个普通用户,并切换为普通用户后,再执行2.1的命令即可
![](https://img-blog.csdnimg.cn/img_convert/3e5a40f78bc343e6b28871ac9dd3d169.png)