N1 系统安装完成后,为了使外网登录更加安全,本篇将介绍如何把 ssh 密码
登录方式改为 ssh 证书
免密登录。
证书登录实现步骤
- 生成证书:私钥和公钥,私钥存放在客户端,必要时可为私钥加密;
- 服务器添加信任公钥:把生成的公钥,上传到ssh服务器,添加到指定的文件中(默认是:
.ssh/authorized_keys
文件); - 配置开启允许证书登录,客户端就能通过私钥ssh登录服务器了。
具体实现
生成私钥和公钥
1 | ssh-keygen -t rsa -b 4096 -f ~/.ssh/n1_ca -C n1_ca |
执行过程中会提示输入两次密码,当然如果不想在使用公钥的时候输入密码,直接回车即可。
-t rsa
:指定密钥算法 RSA。-b 4096
:指定密钥的位数是4096位。安全性要求不高的场合,这个值可以小一点,但是不应小于1024。-f ~/.ssh/n1_ca
:指定生成密钥的位置和文件名。-C n1_ca
:指定密钥的识别字符串,相当于注释,可以随意设置。
将公钥拷贝到服务器上
1 | ssh-copy-id -i ~/.ssh/n1_ca.pub root@192.168.50.3 |
登录服务器,确认公钥已配置正确。
1 | cat ~/.ssh/authorized_keys |
服务端配置:sshd_config
1 | vim /etc/ssh/sshd_config |
1 | 允许 root 账户登录,默认:yes。 |
完成配置后,需要重启 sshd
服务使配置生效。
1 | $ systemctl restart sshd |
注意:服务端 sshd 服务重启后不要立刻结束当前终端,新建一个终端测试登录,在登录成功且没有问题,后再结束当前终端,以避免配置错误导致无法登录服务器。
测试通过证书登录服务器
1 | ssh -i ~/.ssh/n1_ca root@192.168.50.3 |
通过指定证书文件免密登录服务器,但这样每次登录都需要指定证书文件,可通过客户端配置 ssh_config
文件,追加私钥证书文件,免去每次登录时需指定证书文件的麻烦。
1 | sudo vim /etc/ssh/ssh_config |
保存,今后就可以直接通过 ssh root@192.168.50.3
命令登入 N1
系统啦。
默认:ssh 命令使用的密钥文件是
~/.ssh/id_rsa
。