开始
生成证书文件
建议服务端执行
- 路径填写为
/root/.ssh/certificate
1 | root@test:~# ssh-keygen -m pem -t rsa -b 2048 |
新版会生成 openssh 证书 个别不支持 所以加入了 -m pem -t rsa -b 2048 参数
- https://stackoverflow.com/questions/54994641/openssh-private-key-to-rsa-private-key
- https://stackoverflow.com/questions/66234349/convert-rsa-to-openssh
复制证书文件到本地
/root/.ssh 目录中应该生成了 certificate 和 certificate.pub 这两文件
其中 certificate 就是咱们等哈要用到的证书 咱们先剪贴到本地保存起来
再把 certificate.pub 重命名成 authorized_keys
1 | mv certificate.pub authorized_keys |
配置服务端在证书
打开 /etc/ssh/sshd_config 文件
找到这 PubkeyAuthentication 与 AuthorizedKeysFile 这两行 去掉前面的注释
含义
PubkeyAuthentication是否打开证书验证AuthorizedKeysFile证书验证文件 采用登录用户目录下.ssh/authorized_keys和.ssh/authorized_keys2进行验证, 我们登录的root账户的话 就在/root/.ssh/authorized_keys这个路径查找证书,如果是其他账户 就在/home/账户名/.ssh/authorized_keys这个路径下查找证书进行验证,可以添加多个路径并用空格隔开,这样就有了多私钥可以用于登录了.
修改前
1 | #PubkeyAuthentication yes |
修改后
1 | PubkeyAuthentication yes |
验证是否修改成功
重启 ssh 守护进程
1 | systemctl restart sshd |
采用刚剪贴到本地的证书在打开新窗口的情况下进行登录
1 | ssh -i ./certificate root@host |
不出意外的话 这就登录成功了
其他操作
关闭密码登录
/etc/ssh/sshd_config 文件中
PasswordAuthentication
yes采用密码验证 默认 未出现此字段或注释no关闭密码验证
1 | PasswordAuthentication no |
更改ssh端口号
1 | Port 22 |