开始
生成证书文件
建议服务端执行
- 路径填写为
/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 |