Linux 主机加固之使用 SSH 密钥登陆服务器

前言
一般情况下对于Linux服务的管理我都是采用ssh账户登陆,对于企业可能拥有高级网络工程师,能够搞定ssh不出网。但是作为小企业或者个人而言,我们ssh一般都会出网,可能安全意识高一些的会将22端口更改,安全意识低的就直接在公网暴露ssh端口,也因此有很多小伙伴的服务器每天在遭受着来自全球的暴力破解攻击。今天我们一起学习一下如何不通过ssh账户密码来控制我们的Linux,那就是使用密钥对。
使用没有密码的密钥对
第一步:制作密钥对
按如下操作完成,会在用户根目录下生成.ssh文件夹
[root@localhost ~]# ssh-keygen #生成秘钥对命令
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #这里直接回车即可
Created directory '/root/.ssh'.
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:gXk+GVw+zqzENR0SprrxGOdtyjzZwvEFAdNfrN9+ntY root@localhost
The key's randomart image is:
+---[RSA 2048]----+
| oo=... |
| + *oo .o |
| o * =o.o |
| = O.oo |
| + S +. . . |
| X.+ . . .|
| o.+=o. ..|
| o=oo .E|
| +o .oo|
+----[SHA256]-----+
第二步:安装公钥
[root@localhost ~]# cd .ssh #进入隐藏目录
[root@localhost .ssh]# cat id_rsa.pub >> authorized_keys #将公钥写入指定文件
[root@localhost .ssh]# ls #查看结果
authorized_keys id_rsa id_rsa.pub
第三步:设置权限
为保证能够连接成功,至少需要配置如下权限
[root@localhost .ssh]# chmod 600 authorized_keys #保证authorized_keys读写权限
[root@localhost .ssh]# chmod 700 ~/.ssh #给.ssh读写执行权限
[root@localhost .ssh]# ll
总用量 12
-rw-------. 1 root root 396 12月 23 17:50 authorized_keys
-rw-------. 1 root root 1675 12月 23 17:44 id_rsa
-rw-r--r--. 1 root root 396 12月 23 17:44 id_rsa.pub
第四步:配置SSH
[root@localhost ~]# vim /etc/ssh/sshd_config
#允许秘钥认证,如果配置文件中没有则添加
PubkeyAuthentication yes
#允许root登录,不轮密码还是秘钥,都需要打开
PermitRootLogin yes
#设置是否允许密码登录,建议秘钥能登录后再修改成no
PasswordAuthentication no
注解:RSAAuthentication (rsa认证)是只支持第1代ssh通讯协议使用的配置项,在CentOS7.4起被废除了,而且前面提到过CentOS7开始预设使用第二代通讯协议,在CentOS7.4中没有找到指定协议版本的配置行,个人猜测是CentOS7.4全面抛弃第1代协议。
第2代ssh通讯协议的密钥验证选项是
PubkeyAuthentication yes
这个选项默认是注释掉的,并且是默认开启的,因此我们在使用第二代ssh通讯协议时不需要再去纠>结 RSAAuthentication 选项了,在CentOS7.4以上的系统中其强行添加 RSAAuthentication 配置会触发系统对它的废除提示。
第五步:Linux中涉及配置文件修改的地方要重启服务
[root@localhost ~]# systemctl restart sshd
第六步:将私钥下载下来
我下载下来,放到了D盘
[root@localhost .ssh]# ls
authorized_keys id_rsa id_rsa.pub
#id_rsa 是我们下载的私钥文件
第七步:使用ssh工具连接
这里我使用finalshell这款ssh工具进行测试
有密码的密钥对
前言
私钥文件可以拷贝,所以存在一定风险,为了避免被他人盗用,我们接下来生成带“密码”的私钥
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #直接回车
Created directory '/root/.ssh'.
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:+ca2UcZlMe1jpsFbF1n9b4WhCZEnzB3B7wsPVNY9fAc root@localhost
The key's randomart image is:
+---[RSA 2048]----+
| o.=ooE+*|
| * + +BB|
| +.*o+*|
| . .+=o==|
| S .+.B =|
| o ooo. o|
| * + o |
| o o o |
| . |
+----[SHA256]-----+
后续步骤
后续步骤按照制作没有密码的密钥对的方式进行即可,这里我不再赘述。
总结
最后切记去配置文件关闭账户登陆,这样才能提高安全性!
[root@localhost ~]# vim /etc/ssh/sshd_config
#设置将PasswordAuthentication 的值设置为no即可
PasswordAuthentication no
[root@localhost ~]# systemctl restart sshd
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: