Linux 服务器使用密钥登录

经常使用密码登录服务器,一方面密码输入麻烦,另一方面存在被爆破的可能性,所以我们从安全角度需要用证书登录

操作流程

1、在一台 Linux 系统上输入 ssh-keygen -t rsa -b 4096 -C "备注证书信息"得到你的一对证书(生成期间可以一路默认)

2、打开用户文件夹,进入.ssh 文件夹,可以查看到新增了两个前缀为 id 的文件,其中 id_rsa 是客户端使用的 Global Key,而 id_rsa.pub 则为服务器对应的 Host Key

3、你需要将 id_rsa.pub 添加到.ssh/authorized_keys。如果第一次添加那么可以直接复制 id_rsa.pub 并重命名为 authorized_keys。

4、创建一个新用户

5、用户创建添加完毕后,编辑 sshd 设置,vi /etc/ssh/sshd_config,修改如下配置(请自行视情况修改)

#修改 SSH 服务端端口号
Port 12345
#强制开启新版本 SSH
Protocol 2
#禁止 root 用户登陆
PermitRootLogin no
#手动允许指定用户 myuser 登录
AllowUsers myuser
#允许使用证书作为验证
PubkeyAuthentication yes
#允许使用密码登录
PasswordAuthentication yes
#使用双重加密的方式认证
AuthenticationMethods publickey,password

6、此时防火墙手动添加端口 (本例 22 改为 12345),重载防火墙配置,重启 ssh 服务端

vi /usr/lib/firewalld/services/ssh.xml
firewall-cmd --reload
systemctl restart sshd.service

7、此时不要关闭窗口,新建一个 SSH 窗口连接服务器,仅当使用密码与证书两者一起的时候才能登录成功,而且测试 root 账户已经无法登录,才可以完全关闭原有 SSH 窗口

8、赋予普通账户 sudo 权限,使其可以用 sudo 进行额外的操作

#手动允许指定用户 myuser 使用 sudo
gpasswd -a myuser wheel
#查看所有拥有 sudo 权限的用户
lid -g wheel

默认 Linux 自带 ssh 客户端,可以连接其他服务端,使用方法是 ssh -q 用户名@公网 IP 地址 然后输入密码,而秘钥登录是 ssh -i 证书文件路径 用户名@公用 IP 地址。如果两者都使用则将命令合并一下即可。

参考文章:https://segmentfault.com/a/1190000004141370

点赞