随着网络进步,现在Linux VPS服务器的使用也越来越多,Linux的安全问题也需要日渐加强,通常VPS或服务器开通后都是直接提供IP和root密码,使用这种方式就是通过密码方式登录。如果没有安装DenyHosts之类的防止SSH密码破解的软件,那么系统安全将存在很大的隐患(再复杂的密码也是有可能被破解的)。

linux VPS的登录方式有两种:一种是以上所说的密码登录,另一种则是密钥验证登录。通过生成一对密钥(公钥和私钥)之后的验证登录,想要破解是基本不可能的事情(密钥长达1024和2048位,而且还要一对匹配才可以)。

当然,有利就有弊,密钥登录虽然安全可靠,但对于经常要在不同机器上SSH登录很不方便(需要用到保存的私钥去验证在服务器上的公钥),当然你也可以将私钥保存到U盘上。

言归正传,如果你在安装服务器系统时没有选择密钥验证的话(有些VPS面板是可以选择密码和密钥验证的),首先需要生成密钥。

一、在VPS服务器上生成密钥

1.SSH连接VPS服务器,运行命令:

ssh-keygen -t rsa

得到结果如下:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): //提示回车
Enter passphrase (empty for no passphrase): //输入密钥密码(可回车忽略,但最好填,linux输密码是看不到字符的)
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:
15:23:a1:41:90:10:05:29:4c:d6:c0:11:61:13:23:dd root@ecs-abc //这是密钥指纹,具体用处不是很清楚
The key's randomart image is:
+--[ RSA 2048]----+
|=&@Bo+o o.o      |
|=o=.E  o . o     |
| .    .   .      |
|         .       |
|        S        |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+

2.下载/root/.ssh/id_rsa文件

(私钥,登录用到)保存好,至于如何下载嘛,可以使用编辑命令 vi /root/.ssh/id_rsa 把内容复制下来保存(注意是无后缀的)。

2.1 mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys 必须重命名公钥为这个名字才生效

2.2 chmod 600 .ssh 必须设置权限为600(root用户所有和读取)才生效,由于我是用面板改的比较方便,具体命令如果不对请找度娘

3.修改/etc/ssh/sshd_config 文件

将RSAAuthentication(较新版本的CentOS可能没有这一项,那就不要管了) 和 PubkeyAuthentication 后面的值都改成yes ,保存。注意:如果前面有#需要删掉,这个是注释。

4.重启sshd服务,执行命令:service sshd restart

5.使用例如XShell,登录方法选密钥,在用户密钥管理者中导入刚才保存的私钥,测试是否登录成功。

QQ截图20200501083338.jpg

如果提示“所选的用户密钥未在远程主机上注册”,则vi /var/log/secure查看一下日志是什么错误。

6.继续修改/etc/ssh/sshd_config文件,将PasswordAuthentication yes 改成 PasswordAuthentication no 禁掉密码登录,注意别看成了PermitEmptyPasswords,这可是无密码登录,正相反的。

7.执行命令:rm /root/.ssh/id_rsa删掉服务器上的私钥,并service sshd restart重启sshd服务。

本文,完