服务器居然被黑客通过暴力ssh破解并进行挖矿,本篇文章将讲述如何创建用户私钥,并关闭ssh密码登录
1. 创建新用户并创建私钥
使用root用户创建新用户,名为xxx,并禁用密码登录。
指定用户使用的shell解释器为bash,指定用户主目录路径为/home/xxx或者其他自定义路径。
adduser xxx --disabled-password --shell /bin/bash --home /home/xxx
若需对新增用户设置用户组或者其他内容,请参考adduser命令其他用法
2. 对已存在的用户创建私钥
一般分成两种情况:
- 用户自己生成公钥私钥,把公钥文件(.pub文件)交给服务器管理员,或者自己上传到服务器完成配置,这种情况见Xshell生成秘钥对和服务器设置秘钥登录,这两篇博客,本文不再赘述。
- 服务器管理员为用户生成,这种情况见下文。
如果是root用户给其他普通用户生成私钥,则首先切换到用户xxx,进入该用户xxx的工作目录。如果是普通用户给自己生成私钥,忽略这一步,直接下一步。
su xxx
创建ssh的隐藏目录,并赋予700权限(只有该用户读取和修改)
mkdir ~/.ssh
chmod 700 ~/.ssh
创建公钥文件,一个用户会有一个公钥文件。输入以下命令,如果为了简便可以直接不用输入密码一路回车到底。当然更推荐于生成秘钥的时候设置一个为秘钥加密的密码,这样用户后续使用私钥文件+私钥密码的方式会更加安全。(这样可以防止私钥文件泄漏,其他人可以直接登录)
默认生成的路径就是用户主目录下的.ssh文件夹中。
ssh-keygen -t rsa -b 4096 -v
此时,.ssh文件夹中会出现两个文件id_rsa.pub公钥和id_rsa私钥。
接下来,将公钥写入授权文件当中。并赋予该文件600权限(该用户可读可写)。
cd ~/.ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 authorized_keys
最后一步,将私钥文件id_rsa
下载下来,分发给指定用户即可。用户拿到后,使用xshell或者其他终端软件,来进行登录,详细见:https://blog.csdn.net/weixin_45564548/article/details/111193459
若使用putty的话,需要做一次转换操作,见https://blog.csdn.net/wkh___/article/details/85321799。
3. 关闭ssh密码登录功能
当所有用户完成证书分发后,使用root用户,修改/etc/ssh/sshd_config文件,关闭所有用户密码登录的功能。
按照以下参数调整,其他不动
RSAAuthentication yes // RSA秘钥认证
PubkeyAuthentication yes // 公钥认证
PasswordAuthentication no // 关闭密码登录
重启ssh服务
service sshd restart