使用SSH登录服务器的方式有两种。
第一种是IP、密码登录。
第二种是通过密钥对登录。
这两种方法各有优缺点,使用 IP、密码登录是最常见的方式,但是这种登录方式不安全,假如你没有设置出入站规则、没有在后台设置允许的IP登录,入侵者就很可能会通过不断撞库入侵你的服务器。
密钥对相对来说更安全,因为私钥只有你自己知道,设置了秘钥对服务器就很难被入侵。
lastb命令列出登入系统失败的用户相关信息,可以知道服务器被暴力撞库的情况:
第一列:用户名 第二列:终端位置 第三列:登录ip或者内核 第四列:开始时间 第五列:结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机) 第六列:持续时间
.ssh
目录如果没有该目录,则可以新建。
ssh-keygen -t rsa -b 4096
-b 参数
,指定了长度,也可以不加-b参数,也可以为指定的用户生成密钥对,如果不指定默认为当前用户生成密钥对。
如:为用户HaC生成密钥对:
[root@VM-8-8-centos ~]# useradd HaC
[root@VM-8-8-centos ~]# su HaC
[HaC@VM-8-8-centos root]$ cd /home/HaC/
[HaC@VM-8-8-centos ~]$ ssh-keygen -t rsa -b 4096 -f HaC
Enter file in which to save the key 是指定密钥对的存放目录,默认 /root/.ssh/id_rsa
目录,不填。按 Enter 下一步。
Enter passphrase (empty for no passphrase) 是 密钥对的密码,可不填。按 Enter 下一步。
[root@VM-8-8-centos ~]# cd /root/.ssh
[root@VM-8-8-centos .ssh]# ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:jMMB7qtLgpUiXOxd4PizqeUiTo0sj8TGddA/EheDhAc root@VM-8-8-centos
The key's randomart image is:
+---[RSA 4096]----+
| E=o.o |
| .o++. o |
| =o+.o |
|. oo+.=+ |
|o.oo.*+oS |
|*o+ ..=.. |
|+O...+ |
|=* o+ |
|o.=o.. |
+----[SHA256]-----+
[root@VM-8-8-centos .ssh]# ls
id_rsa id_rsa.pub
id_rsa.pub 表示公钥,以 ssh-rsa 开头 id_rsa是私钥
创建一个 authorized_keys
文件,赋予 600权限,如果已经有了authorized_keys
文件,则不需要执行这一步
[root@VM-8-8-centos .ssh]# touch authorized_keys
[root@VM-8-8-centos .ssh]# chmod 600 authorized_keys
执行以下的密钥追加工作:
[root@VM-8-8-centos .ssh]# cat id_rsa.pub >> authorized_keys
目的是把公钥写进 authorized_keys 文件。
> >
表示向文件最后追加>
表示替覆盖文件内容
我这里使用 MobaXterm 终端工具,登录。
把服务器的私钥保存到本地,然后新建连接的时候使用你刚刚保存的私钥。
即可顺利登录:
既然我们使用了密钥对登录,那么,密码就不需要使用了,为了被第三方侵入者暴力撞库,我们可以禁用密码登录。
如果你觉得你的密码很安全,或者设置了防火墙和安全组,可以忽略这一步。
vim /etc/ssh/sshd_config
修改:
# 表示使用密钥对登录
PubkeyAuthentication yes
# 关闭密码登录
PasswordAuthentication no
重启sshd:
systemctl restart sshd
然后你再使用密码登录就告示无法登录了,而只能使用密钥对登录:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XY71eYa7-1622558550414)(https://cdn.jsdelivr.net/gh/DogerRain/image@main/img-20210401/image-20201228181635240.png)]