linux ssh证书登录
为了安全起见,ssh应该用证书,而不是密码进行登录
以下演示先使用ssh密码登陆linux服务器,再改为证书登录的全过程
1.使用ssh密码登录linux服务器
ssh的软件很多,我这里用的是Tabby Terminal

2.生成公钥和私钥(在被登录的linux服务器操作)
需要使用root账户操作!!!使用普通账户su root提权
生成公钥和私钥,任何目录下都行
ssh-keygen -t rsa
提示默认生成位置为/root/.ssh/id_rsa,直接回车。(也可以自己改)
![]()
提示输入证书的密码,可以留空,建议输入,如果输入了,则需要再次确认,记住这个证书密码
(证书再加一层密码,这样即使证书丢失,也有第二个保险,有个缓冲时间)

3.将公钥添加到 authorzied_keys文件中(在被登录的linux服务器操作)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4.下载私钥
进入目录
cd /root/.ssh/
目录下的文件如下:

下载id_rsa这个文件,用ssh自带的功能
注意:如果上述操作是ssh操作的,即使是su root 提权到root账户,可能没有权限打开这个目录(新的linux ssh版本只有证书登录的root才有完整权限!),那么可以可以使用cat命令把密钥打出来,然后复制文本,在windows下可以新建txt文件,文本复制粘贴进去,然后把文件名去掉.txt后缀就行
cat /root/.ssh/id_rsa
5.使用证书登录
建议先用证书登录,成功后再禁止密码登录,以免出错导致要重装系统

6.配置ssh文件(在被登录的linux服务器操作)
注意:最新的一些linux系统已经默认root必须证书登录,就算使用普通账号提权也无法获取完整的root权限,另外已经没有下面的配置了,但是老一点的系统版本还是有的!所以如果没有下面的配置直接跳过即可
上一步成功登录后可以进行下面的操作。
编辑配置文件
vi /etc/ssh/sshd_config
允许root登录,但只允许证书登录
找到PermitRootLogin 并将值修改为without-password
禁止密码登录(新版ssh无需修改这个)
找到PasswordAuthentication 并将值修改为no
保存后,刷新ssh配置文件
systemctl restart sshd
此时原来密码登录的ssh还能用,但是关闭再打开就不行了,证书登录正常
更多推荐



所有评论(0)