随着网络进步,现在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,登录方法选密钥,在用户密钥管理者中导入刚才保存的私钥,测试是否登录成功。
如果提示“所选的用户密钥未在远程主机上注册”,则vi /var/log/secure
查看一下日志是什么错误。
6.继续修改/etc/ssh/sshd_config文件,将PasswordAuthentication yes
改成 PasswordAuthentication no
禁掉密码登录,注意别看成了PermitEmptyPasswords,这可是无密码登录,正相反的。
7.执行命令:rm /root/.ssh/id_rsa
删掉服务器上的私钥,并service sshd restart
重启sshd服务。
本文,完