跳到主要内容

服务器登录管理

小林
后端开发工程师, 专注Go开发、微服务和云原生

当我们从云服务商购买一台服务器后, 第一件要做的事就是进行登录管理, 加强服务器安全. 因为云服务器不同于我们本地的开发环境, 会直接暴露在公网环境下, 几乎每时每刻都在遭遇黑客的扫描、入侵的风险, 如果依然选择简单密码登录方式, 将很容易被别人暴力破解试出. 下面将介绍如何使用更安全的登录方式

hiking.png

在本地生成随机强密码​

echo "@Aa$(openssl rand -base64 16)" | cut -c1-16
提示

用 openssl 生成随机的 16位 base64 字符并与 "@Aa" 拼接截取前 16位

root 账号重置密码​

可以登录云服务商的控制台, 重置服务器 root 账号的密码为刚才产生的密码

复制 root 公钥到服务器​

sshpass -p 'password' ssh-copy-id -i ./ssh/root.pub root@remote_host
  • password 改成自己的密码
  • ./ssh/root.pub 改成自己的公钥路径, 默认公钥路径在 ~/.ssh/id_rsa.pub
  • remote_host 改成自己的 IP 地址
  • 记得安装 sshpass, 命令 apt install sshpass

也可以直接登录服务器并修改 ~/.ssh/authorized_keys 文件, 将自己的公钥复制进去

校验 root 密钥登录​

用 root 账号无密码登录到服务器

ssh -i ./ssh/root root@remote_host

成功登录服务器说明上面流程没有问题

禁止密码登录​

用 root 账号登录服务器, 限制只能密钥登录, 提高安全性

在服务器上运行下面命令, 添加 sshd 配置

echo "PasswordAuthentication no" > /etc/ssh/sshd_config.d/disable-password-login.conf

重启 sshd

service sshd restart

在本地尝试使用密码登录, 提示错误说明禁止密码登录成功了

添加普通账号​

添加账号, 根据交互输入信息

adduser user01

设置账号密码, 密码弱一点无所谓, 方便 sudo 输入, 安全性通过禁止密码登录保证

passwd user01
危险

注意添加账号这一步一定要在禁止密码登录之后执行, 否则会因为设置了弱密码存在服务器被攻破的可能

将普通账号公钥添加到服务器​

建议在本地为 user01 另外生成密钥对, 密钥生成可参考我这篇文章 生成 RSA 密钥对

将 user01 账号的公钥添加到 /home/user01/.ssh/authorized_keys 上

vim /home/user01/.ssh/authorized_keys
注意

注意这里的路径目录为 /home/user01, 不同于 root 账号的目录为 /root

普通账号登录​

尝试用 user01 账号登录服务器

ssh -i ./ssh/user01 user01@remote_host
  • ./ssh/user01 为 user01 账号的私钥, 注意要有正确的文件权限

修改私钥文件权限命令如下

chmod 400 ./ssh/user01
提示

如果使用 wsl 并且私钥文件在 Windows 文件系统下有可能无法修改文件权限, 可以将文件复制 /tmp 路径下再修改, 当然, ssh连接时的私钥路径也得指定为新文件

禁止 root 账号登录​

为进一步加强安全性, 可以禁止 root 账号登录

echo "PermitRootLogin no" > /etc/ssh/sshd_config.d/disable-root-login.conf

重启 sshd

service sshd restart

尝试用 root 账号无法登录服务器说明配置生效了