前两天在登录 vultr vps 的时候,发现在被人暴力破解,到现在应该已经进行上万次的尝试了。因为我在 vultr vps 上就搭了一个梯子,也没有其他东西,就一直都是用 root + 密码登录到 vps。照这个破解速度,早晚有一天密码会被暴力破解的。所以还是老老实实得开启 ssh 登录 + 禁止 root 用户登录和密码登录。
vps暴力破解截图
所以一般在你拿到一个新的 vps 之后,需要做的第一件事情就是新建普通用户,开启 SSH 免密码登录。然后禁止 root 用户登录和密码登录。这样就从根本上防止别人暴力破解密码的可能性。

第一步:ssh 密钥登录

新建用户并赋予root 权限

1
2
3
4
useradd superman
passwd superman
# 输入密码
# 再次确认密码

给用户 superman 添加 sudo 命令权限

1
2
3
4
// 给 superman 这个用户添加 sudo 权限
# echo -e "\n superman ALL=(ALL) ALL\n" >> /etc/sudoers
// 输出文件最后3行
# tail -3 /etc/sudoers

输出以下内容即表示成功添加:

1
superman ALL=(ALL) ALL

本地生成公钥并上传到服务器

如果已经生成的话,可以忽略这一步。

1
ssh-keygen

一路回车即可。成功后会在当前用户的 .ssh/ 文件夹下找到。

然后在本地将公钥上传到 新用户对应的.ssh下面即可。
上传本地公钥到服务器有两种方式,一种是直接使用 scp,Mac 用户还可以通过 brew install ssh-copy-id 来一键copy 公钥(推荐此种方式)。

通过 scp 方式

1
2
// -P(注意是大写)为端口参数,如果没有自定义端口可以不填
scp -P 29382 ~/.ssh/id_rsa.pub username@ip_adress:.ssh/authorized_keys

Mac 用户可以通过 ssh-copy-id

1
2
// -p 一样是端口号,只不过这里是小写
ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip_adress -p xxx

需要注意的是,这里的 username 是指前面你刚创建的新用户。
上传成功后,用前面第一步创建的用户登录到 vps,设置 ssh 文件夹和 authorized_keys 文件的权限:

1
2
chmod 600 authorized_keys
chmod 700 ~/.ssh

设置ssh,开启密钥登录

添加用户并设置权限后,就可以到 ssh config 中修改配置,开启 ssh 登录,禁用密码登录和 root 用户登录。
编辑 /etc/ssh/sshd_config 文件

1
vi /etc/ssh/sshd_config

找到开启 SSH 登录的配置,进行如下的设置

1
2
RSAAuthentication yes
PubkeyAuthentication yes

这时候先别急着禁掉 root 和 密码登录。建议先测试下能不能用刚刚新创建的新用户直接 ssh 登录,成功后再禁掉。要不然就gg了。
测试使用可以正常使用密钥登录后,需要再进行其他一些安全设置

禁用密码登录

1
PasswordAuthentication no

禁止 root 用户登录

1
PermitRootLogin no

上述设置完成后,重启 ssh

1
service sshd restart

如果权限不够,可以加上 sudo service sshd restart

经过上面的设置,就可以愉快得用 ssh 免密码登录你的 vps,还不用担心别人暴力破解了。

这里推荐 Mac 下好用的 ssh 客户端:shuttle

其他安全设置

后续持续更新…

参考资料