服务器怎么移除密码?

直接禁用密码登录是服务器安全的最佳实践之一,可以有效防止暴力破解攻击。

下面我将分两种情况详细说明,并强调安全注意事项。

情况一:Linux / Unix 服务器(最常见)

对于 Linux 服务器,我们通常使用 SSH 进行远程登录,目标是:为当前用户配置 SSH 密钥登录,然后禁用服务器的密码登录功能。

步骤 1:生成 SSH 密钥对(在您的本地电脑上操作)

这个密钥对包括一个私钥(自己保管好,绝不外传)和一个公钥(放到服务器上)。

1、 打开您的本地终端(Linux/macOS)或 PowerShell/Git Bash(Windows)。

2、 运行以下命令生成密钥对,通常使用更安全的ed25519 算法,或者传统的rsa 算法。

    ssh-keygen -t ed25519 -C "your_email@example.com"

-t ed25519指定密钥类型。

-C "your_email@example.com"添加一个注释,通常用邮箱,便于识别。

3、 系统会提示您选择密钥的保存路径,直接按回车使用默认路径(如~/.ssh/id_ed25519)。

4、 系统会提示您设置一个密钥的密码强烈建议设置!这样即使有人拿到你的私钥,没有这个密码也无法使用,如果确实想“无密码”,可以直接按两次回车跳过(不推荐)。

生成成功后,您会在~/.ssh/ 目录下看到两个文件:

id_ed25519私钥,保密!

id_ed25519.pub公钥,可以放心分发。

步骤 2:将公钥上传到服务器

我们需要将本地生成的公钥内容添加到服务器上对应用户的~/.ssh/authorized_keys 文件中。

最简单的方法:使用ssh-copy-id 命令(在您的本地电脑上操作)

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip_address

username 替换为你的服务器用户名(如root,ubuntu 等)。

server_ip_address 替换为你的服务器 IP 地址。

执行此命令后,会提示你输入一次服务器的用户密码,输入后,公钥就会自动上传到正确位置。

如果您的系统没有ssh-copy-id,可以手动操作:

1、 在本地电脑上查看公钥内容:cat ~/.ssh/id_ed25519.pub,复制全部输出。

2、 通过密码登录服务器:ssh username@server_ip_address

3、 在服务器上,进入~/.ssh 目录:cd ~/.ssh

4、 如果authorized_keys 文件不存在,就创建一个:touch authorized_keys

5、 编辑该文件:nano authorized_keys,将刚才复制的公钥内容粘贴到新的一行,保存退出。

6、 设置正确的权限(非常重要!):

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

步骤 3:测试密钥登录

不要关闭当前的密码登录会话! 新开一个本地终端窗口,尝试登录服务器:

ssh username@server_ip_address

如果配置正确,你将不再需要输入用户密码,而是直接登录(或者只输入你为私钥设置的密码)。

确保测试成功!这是关键一步,否则下一步会把自己锁在服务器外面。

步骤 4:禁用服务器密码登录(在服务器上操作)

密钥登录测试成功后,就可以安全地禁用密码登录了。

1、 登录服务器,使用sudo 权限编辑 SSH 服务端配置文件:

    sudo nano /etc/ssh/sshd_config

2、 找到以下行并进行修改(如果行首有# 注释,请删除):

    PasswordAuthentication no
    ChallengeResponseAuthentication no
    UsePAM no

3、 保存文件后,重启 SSH 服务以使配置生效:

    # 对于 Ubuntu/Debian 系统:
    sudo systemctl restart ssh
    # 对于 CentOS/RHEL 系统:
    sudo systemctl restart sshd

至此,你的服务器已经移除了密码登录方式,只能通过 SSH 密钥认证登录,安全性大大提高。

情况二:Windows 服务器

对于 Windows 服务器(通过 RDP 远程桌面登录),完全移除密码同样不推荐,更安全的做法是:

1、使用强密码:设置一个非常复杂的长密码。

2、启用网络级身份验证:增加一层认证。

3、改用“本地策略”限制登录

* 打开gpedit.msc(本地组策略编辑器)。

导航到计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 安全选项。

找到帐户使用空密码的本地帐户只允许进行控制台登录,将其设置为已启用,这可以防止远程用户使用空密码登录。

注意Windows 不建议完全禁用密码,因为这会影响许多系统服务和管理功能。

更现代和安全的做法是将 Windows Server 加入 Azure Active Directory (AAD),并使用 AAD 身份验证或 Windows Hello 企业版进行无密码登录。

⚠️ 重要安全警告与建议

1、绝对不要直接删除或清空用户密码! 这会导致许多系统服务无法正常运行,甚至使系统崩溃。

2、在修改 SSH 配置前,务必测试密钥登录是否成功! 否则一旦禁用密码登录,而密钥又失效,你将永久失去对服务器的访问权限。

3、备份私钥:将你的 SSH 私钥安全地备份到多个地方(如加密的 U 盘、密码管理器)。

4、使用密码保护你的私钥:即使设置了密钥登录,也强烈建议在生成密钥时设置一个密码(passphrase)。

5、考虑备用方案:对于重要服务器,可以保留一个备用访问方式,例如通过云服务商的控制台(VNC, Serial Console)登录,以防密钥全部丢失。

对于 Linux 服务器,“移除密码”的正确做法是配置 SSH 密钥登录并禁用密码认证,对于 Windows 服务器,则建议使用强密码并结合其他安全策略,或集成到现代身份验证平台。

文章摘自:https://idc.huochengrm.cn/fwq/16405.html

评论