如何在 Linux 上禁用密码登录如何在 Linux 上禁用密码登录如何在 Linux 上禁用密码登录如何在 Linux 上禁用密码登录
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上禁用密码登录

本教程介绍了如何在通过 ssh 连接时在 Linux 上禁用登录。

阅读本教程后,您将了解如何禁用 ssh 密码登录,转而启用密钥身份验证,从而提高系统安全性。如果您正在寻找仅禁用 root 登录的方法,请查看本教程。

禁用 ssh 密码登录:

本教程中有关 ssh 的部分重点介绍配置文件 /etc/ssh/sshd_config,该文件与任何其他系统配置文件一样,必须使用 root 权限进行编辑。

使用 root 权限打开文件 /etc/ssh/sshd_config。下面的命令可用于使用 Nano 文本编辑器打开 sshd_config。

sudo nano /etc/ssh/sshd_config

向下滚动文件并找到包含“PasswordAuthentication yes”的行,如下面的屏幕截图所示。您可以使用 nano CTRL+W(Where)组合键来搜索包含“PasswordAuthentication”的行。

编辑该行,使其保留如下面的屏幕截图所示,将 yes 替换为 no。

PasswordAuthentication no

现在,您的 ssh 密码登录已配置为在保存文件并重新启动 ssh 服务后禁用。您可以按 CTRL+X 退出文件版本保存设置。

要重新启动 ssh 服务并应用更改,请运行以下命令。

sudo systemctl restart ssh

现在,对传入 ssh 连接禁用密码身份验证。

注意:如果您只想禁用密码验证方法,您可能更愿意删除 ssh 服务;如果这就是您想要的,本节末尾有说明。

启用 ssh 密钥身份验证:

密钥认证与密码认证方式不同。根据环境的不同,它比默认密码登录方法有优点和缺点。

当使用密钥认证时,我们讨论的是一种包含两个不同密钥的技术:公钥和私钥。在这种情况下,公钥存储在接受登录的服务器中;该公钥只能使用私钥解密,私钥存储在允许通过 ssh 连接的设备(客户端)中。

公钥和私钥均由同一设备同时生成。在本教程中,公钥和私钥均由客户端生成,并且公钥与服务器共享。在开始本教程的部分之前,让我们先列举一下密钥身份验证相对于默认密码登录的优势。

主要身份验证优势:

  • 默认生成的强密钥,比大多数使用的人造密码更强

  • 私钥保留在客户端;与密码相反,它无法被嗅探

  • 只有存储私钥的设备才能连接(这也可以被认为是一个缺点)

密码相对于密钥身份验证的优势:

  • 您可以从任何设备进行连接,无需私钥

  • 如果设备是本地访问的,则不会存储密码以供破解

  • 允许访问多个帐户时更容易分发

要生成公钥和私钥,请以您想要提供 ssh 访问权限的用户身份登录,并通过运行以下命令生成密钥。

ssh-keygen

运行 ssh-keygen 后,系统会要求您输入密码来加密您的私钥。大多数可访问 ssh 的设备没有密码;如果私钥泄露,您可以将其留空或输入密码来加密您的私钥。

正如您在上面的屏幕截图中看到的,私钥默认保存在 ~/.ssh/id_rsa 文件中,创建密钥时位于用户的主目录中。公钥存储在位于同一用户目录的文件 ~/.ssh/id_rsa.pub 中。

将公钥共享或复制到服务器:

现在您的客户端设备上同时拥有公钥和私钥,您需要通过密钥身份验证将公钥传输到要连接的服务器。

您可以按照您喜欢的任何方式复制文件;本教程展示了如何使用ssh-copy-id命令来实现它。

生成密钥后,运行以下命令,将 linux 替换为您的用户名,将 192.168.1.103 替换为您的服务器 IP 地址,这会将生成的公钥复制到服务器的用户~/.ssh目录。系统将要求您输入用户密码以保存公钥,键入该密码,然后按 ENTER。

ssh-copy-id linux@192.168.1.103

复制公钥后,您可以通过运行以下命令连接到您的服务器而无需密码(替换您的用户名和密码)。

ssh linux@192.168.1.103

删除 ssh 服务:

也许您想完全删除 ssh;在这种情况下,删除该服务将是一种选择。

注意:在远程系统上运行以下命令后,您将失去 ssh 访问权限。

要删除 ssh 服务,可以运行以下命令:

sudo apt remove ssh

如果要删除 ssh 服务,包括配置文件,请运行:

sudo apt purge ssh

您可以通过运行以下命令重新安装 ssh 服务:

sudo apt install ssh

现在您的 ssh 服务已恢复。保护 ssh 访问的其他方法可能包括更改默认 ssh 端口、实施防火墙规则来过滤 ssh 端口以及使用 TCP 包装器来过滤客户端。

结论:

根据您的物理环境和安全策略等其他因素,可能建议使用 ssh 密钥身份验证方法而不是密码登录。由于密码不会发送到服务器进行身份验证,因此这种方法在中间人或嗅探攻击之前更安全;这也是防止 ssh 暴力攻击的好方法。密钥认证的主要问题是设备必须存储私钥;如果您需要从新设备登录,可能会感到不舒服。另一方面,这可能被视为安全优势。

此外,管理员可以使用 TCP 包装器、iptables 或 UFW 规则来定义允许或不允许的客户端并更改默认 ssh 端口。

一些系统管理员仍然更喜欢密码身份验证,因为在多个用户之间创建和分发速度更快。

从未通过 ssh 访问系统的用户可以选择删除此服务以及所有未使用的服务。

我希望这个展示如何在 Linux 中禁用密码登录的教程有用。继续关注 Linux Hint 以获取更多 Linux 技巧和教程。

©2015-2025 艾丽卡 support@alaica.com