飘在云端

东西南北,海角天涯

· 备查 · · 216次浏览

centos7.x 配置ssh 证书密钥(免密)登陆

本文最后一次更新时间:2019-12-27 15:39

说明:以下配置在 centos 7.6 x64(core) 纯净原始环境测试通过,坑已经都帮你们填好了,直接复制粘贴就完事了。

配置ssh证书密钥(免密)登陆,避免端口扫描和密码爆破。

1.配置证书目录权限为仅自身可读写

chmod 700 ~/.ssh && ssh-keygen -t rsa -b 4096

一路回车(3次),如果提示文件已存在,输入yes回车确认覆盖写入。

2.创建私钥文件并写入私钥和修改权限(下面是一句话命令,没有换行,全部复制)

mkdir ~/.ssh &touch ~/.ssh/authorized_keys && cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

3.查看私钥并保存

cat ~/.ssh/id_rsa

把执行cat ~/.ssh/id_rsa命令后输出的私钥内容完整复制,从开头 ===……省略若干……到结尾 == ,完整复制,不能缺少,然后本地新建一个文本文档,比如新建一个key.txt,把复制的私钥粘贴进去,接着保存文件,待会ssh证书登陆需要用到这个文件。

4.修改ssh配置文件,关闭密码登陆,开启证书免密登陆
编辑ssh配置文件

vi /etc/ssh/sshd_config

配置允许证书免密登陆,找到 PubkeyAuthentication 所在行,把前面的 \# 去掉,再把 no 改成 yes
也就是下面显示的修改后效果

PubkeyAuthentication yes

再关闭密码登陆,找到 PasswordAuthentication 所在行,把 它后面的值 yes 改成 no ,如下修改后的效果

PasswordAuthentication no

5.重启ssh服务,使配置生效

重启前再次自行确认私钥已经拷贝回本机,否则恭喜你,成功的自己把自己关在外面(这真是一个悲伤的故事)。

systemctl restart sshd

6.连接ssh测试证书登陆(成功了不用往下看)

7.在上述步骤确认无误的情况,无法证书登陆,请用vnc等方式ssh登陆,参照备注修改。


备注:基于安全因素考虑,ssh默认情况下会严格检测私钥目录、用户目录及其相关文件的权限是否设置正确,权限设置不对,将会无法使用密码或者证书登陆ssh。
毕竟权限设置错误可能会导致私钥泄露,如果还是root用户的私钥,对方就可以登陆你的服务器为所欲为了。所以下面的操作是下下策!

但是有一种情况是,即使权限设置都正确无误,ssh公钥私钥也配置正确,也重启了ssh服务,死活连不上,可能就是奇奇怪怪的权限问题,此时可以简单粗暴这样做,在 sshd_config 文件中直接把 #StrictModes yes 改成 StrictModes no,关闭文件目录权限自检,再重启ssh服务 systemctl restart sshd,就可以登陆了。

评论 (1条)
  1. 宕机660秒 博主

    666,我成功的把自己关在了外面!那个忘记把私钥下回本地了......

    回复