博客 / Linux/ linux服务器禁用root账户密码登录,只能采用密匙登录,加强系统安全

linux服务器禁用root账户密码登录,只能采用密匙登录,加强系统安全

linux服务器禁用root账户密码登录,只能采用密匙登录,加强系统安全

修改 SSH 端口

修改 SSH 端口是加强服务器安全的基础步骤之一。默认的 22 端口是自动化攻击的常见目标。修改方法如下:

  1. 使用文本编辑器(如 vi)打开 SSH 配置文件:vi /etc/ssh/sshd_config
  2. 找到 #Port 22 这一行,删除开头的注释符号 #,并将数字 22 修改为你希望使用的端口号(建议使用大于 10000 的端口)。
  3. 保存并退出编辑器。

重要提示:修改端口前,请确保新端口未被系统其他服务占用,并且已在服务器的防火墙(如 iptables、firewalld)或云服务商的安全组规则中开放,否则将导致无法连接。

配置 SSH 密钥登录并禁用密码登录

仅使用密钥进行身份验证,并完全禁用 root 账户的密码登录,是防止暴力破解最有效的方法之一。以下为完整配置流程。

1. 生成 SSH 密钥对

在本地或一台可信的机器上执行以下命令生成密钥对:

ssh-keygen -t rsa -b 4096

命令执行过程中会提示:

  • 设置密钥文件保存路径:通常直接按回车使用默认路径(如 ~/.ssh/id_rsa)。
  • 设置密钥密码(Passphrase)强烈建议设置一个强密码。这为私钥增加了一层保护,即使私钥文件泄露,攻击者也无法直接使用。

命令执行后,会在 ~/.ssh/ 目录下生成两个文件:

  • id_rsa私钥。这是需要绝对保密的文件,请妥善存储在本地安全的位置。
  • id_rsa.pub公钥。这个文件可以公开,需要上传到服务器。

2. 将公钥上传至服务器

将本地生成的公钥内容追加到服务器上对应用户(此处以 root 用户为例)的授权密钥文件中。

  1. 首先,确保服务器上 /root/.ssh/ 目录存在,权限正确:
    mkdir -p /root/.ssh
    chmod 700 /root/.ssh
  2. 将公钥内容追加到 authorized_keys 文件:
    cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
  3. 设置授权文件权限:
    chmod 600 /root/.ssh/authorized_keys

3. 配置 SSH 服务端

编辑 SSH 服务端配置文件 /etc/ssh/sshd_config

vi /etc/ssh/sshd_config

找到并修改以下配置项:

  • 启用密钥认证:确保以下行未被注释(即行首没有 #),且值为 yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
  • 禁用密码认证:将以下行修改为 no,以彻底关闭密码登录。
    PasswordAuthentication no
  • (可选)禁用 root 密码登录:如果只想对 root 用户禁用密码,可以设置:
    PermitRootLogin prohibit-password

    此设置允许 root 用户使用密钥登录,但禁止使用密码登录。如果上一步已全局禁用密码,则此设置非必需。

  • (可选)修改端口:如果第一步修改了端口,请确认 Port 配置项已正确设置。

4. 重启 SSH 服务并测试

在断开当前连接前,务必新开一个终端窗口,使用密钥登录测试配置是否正确,确认无误后再重启服务。

  • 对于使用 systemd 的系统(如 CentOS 7+、Ubuntu 16.04+):
    systemctl restart sshd
  • 对于使用 SysV init 的系统(如 CentOS 6):
    service sshd restart

关键安全建议

  1. 备份私钥:私钥丢失将导致无法登录服务器,请务必做好备份。
  2. 删除服务器上的私钥:生成密钥对后,切勿将私钥文件(id_rsa)留在服务器上。公钥上传后,服务器上只需保留 authorized_keys 文件。
  3. 使用强密码:为私钥设置一个复杂且唯一的密码。
  4. 管理多台服务器:建议为每台服务器使用不同的密钥对,以隔离风险。

完成以上步骤后,你的服务器将只能通过 SSH 密钥进行认证登录,安全性将得到显著提升。

发表评论

您的邮箱不会公开。必填项已用 * 标注。