souwangwm 2009-10-01
有很多朋友发现自己的VPS会有人来暴力尝试root密码,此教程目的就是屏蔽通过密码登录SSH,而仅使用密匙登录SSH
这样可以大大提高VPS的安全性(程序漏洞除外)
注意:本例本地环境为Linux系统,WIN系统下可参考网络上其他教程
警告:下面的操作有风险,可能导致你无法SSH连接管理你的VPS,建议有VPS操控面板,能在线重装系统的用户尝试,HyperVM 面板里有个默认的帐号密码SSH连接母机后可以跳转至root用户SSH连入你的VPS。
测试环境:本地Ubuntu,远程VPS为CentOS系统
Ubuntu系统禁止直接用root用户登录,我这里举例一个用户名 test
这个 test 用户是你在安装 Ubuntu系统过程中创建的
它有 sudo 的权限(以后 useradd 的用户默认是没有sudo权限的)
第一步,SSH密码形式登录远地VPS,然后进行下列设置:
1.添加一个用户 test 并指定密码
# useradd test
# passwd test
2.给 test用户赋予sudo 权限
# usermod -G wheel test (添加test用户至wheel用户组)
# vi /etc/pam.d/su (修改配置文件,找到# auth required /lib/security/$ISA/pam_wheel.so use_uid 去掉行首的“#”)
# echo "SU_WHEEL_ONLY yes" >> /etc/login.defs (仅wheel用户组可以使用sudo)
3.切换test用户登录
# su - test
4.在test用户状态下创建密匙对
# ssh-keygen -t rsa (保存至默认路径/home/test/.ssh/id_rsa,并指定密码)
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (公匙文件拷贝成系统默认调用的文件名)
$ chmod 400 ~/.ssh/authorized_keys (修改权限)
5.切换root用户修改SSH配置文件
$ su
# vi /etc/ssh/sshd_config
(找到#Protocol 2,1 去掉行首“#”,再将行末的“,1”删除,仅使用SSH2方式连接;找到#ServerKeyBits 768去掉行首“#”,并将768改为1024,加强密码强度;找到#PermitRootLogin yes去掉行首“#”,并将yes改为no禁止用root进行登录;找到#PasswordAuthentication yes去掉行首“#”,将yes改为no不允许密码方式的登录;找到#PermitEmptyPasswords no去掉行首的“#”,禁止空密码登录)
6.重启SSH服务
# /etc/rc.d/init.d/sshd restart
第二步,本地环境登录SHEEL创建密匙保存目录引用:
$ cd ~ (进入 test用户家目录)
$ mkdir .ssh (建立文件夹)第三步,ubuntuone.cn把VPS上的密匙 id_rsa 保存在 ~/.ssh/ 目录里(建议用SFTP加密下载)
登录后 su 切换成 root 搞定,收工。
第一次登录的时候会提示公匙改变,yes保存新公匙到本地就可以了。
以后登录直接使用命令 ssh IP 就可以了,不象以前得输入 ssh IP -l root
PS:当然你在本地创建密匙对,然后把公匙传到VPS /home/test/.ssh/ 目录下,也是一样的。
PS:VPS公匙保存在相同目录下known_hosts文件中,如果碰到公匙改变,可以直接覆盖,或者手动删除后再次访问VPS加载。