如何在 Linux 上禁用密码登录
本教程介绍了如何在通过 ssh 连接时在 Linux 上禁用登录。
阅读本教程后,您将了解如何禁用 ssh 密码登录,转而启用密钥身份验证,从而提高系统安全性。如果您正在寻找仅禁用 root 登录的方法,请查看本教程。
禁用 ssh 密码登录:
本教程中有关 ssh 的部分重点介绍配置文件 /etc/ssh/sshd_config,该文件与任何其他系统配置文件一样,必须使用 root 权限进行编辑。
使用 root 权限打开文件 /etc/ssh/sshd_config。下面的命令可用于使用 Nano 文本编辑器打开 sshd_config。
向下滚动文件并找到包含“PasswordAuthentication yes”的行,如下面的屏幕截图所示。您可以使用 nano CTRL+W(Where)组合键来搜索包含“PasswordAuthentication”的行。
编辑该行,使其保留如下面的屏幕截图所示,将 yes 替换为 no。
现在,您的 ssh 密码登录已配置为在保存文件并重新启动 ssh 服务后禁用。您可以按 CTRL+X 退出文件版本保存设置。
要重新启动 ssh 服务并应用更改,请运行以下命令。
现在,对传入 ssh 连接禁用密码身份验证。
注意:如果您只想禁用密码验证方法,您可能更愿意删除 ssh 服务;如果这就是您想要的,本节末尾有说明。
启用 ssh 密钥身份验证:
密钥认证与密码认证方式不同。根据环境的不同,它比默认密码登录方法有优点和缺点。
当使用密钥认证时,我们讨论的是一种包含两个不同密钥的技术:公钥和私钥。在这种情况下,公钥存储在接受登录的服务器中;该公钥只能使用私钥解密,私钥存储在允许通过 ssh 连接的设备(客户端)中。
公钥和私钥均由同一设备同时生成。在本教程中,公钥和私钥均由客户端生成,并且公钥与服务器共享。在开始本教程的部分之前,让我们先列举一下密钥身份验证相对于默认密码登录的优势。
主要身份验证优势:
默认生成的强密钥,比大多数使用的人造密码更强
私钥保留在客户端;与密码相反,它无法被嗅探
只有存储私钥的设备才能连接(这也可以被认为是一个缺点)
密码相对于密钥身份验证的优势:
您可以从任何设备进行连接,无需私钥
如果设备是本地访问的,则不会存储密码以供破解
允许访问多个帐户时更容易分发
要生成公钥和私钥,请以您想要提供 ssh 访问权限的用户身份登录,并通过运行以下命令生成密钥。
运行 ssh-keygen 后,系统会要求您输入密码来加密您的私钥。大多数可访问 ssh 的设备没有密码;如果私钥泄露,您可以将其留空或输入密码来加密您的私钥。
正如您在上面的屏幕截图中看到的,私钥默认保存在 ~/.ssh/id_rsa 文件中,创建密钥时位于用户的主目录中。公钥存储在位于同一用户目录的文件 ~/.ssh/id_rsa.pub 中。
将公钥共享或复制到服务器:
现在您的客户端设备上同时拥有公钥和私钥,您需要通过密钥身份验证将公钥传输到要连接的服务器。
您可以按照您喜欢的任何方式复制文件;本教程展示了如何使用ssh-copy-id命令来实现它。
生成密钥后,运行以下命令,将 linux 替换为您的用户名,将 192.168.1.103 替换为您的服务器 IP 地址,这会将生成的公钥复制到服务器的用户~/.ssh目录。系统将要求您输入用户密码以保存公钥,键入该密码,然后按 ENTER。
复制公钥后,您可以通过运行以下命令连接到您的服务器而无需密码(替换您的用户名和密码)。
删除 ssh 服务:
也许您想完全删除 ssh;在这种情况下,删除该服务将是一种选择。
注意:在远程系统上运行以下命令后,您将失去 ssh 访问权限。
要删除 ssh 服务,可以运行以下命令:
如果要删除 ssh 服务,包括配置文件,请运行:
您可以通过运行以下命令重新安装 ssh 服务:
现在您的 ssh 服务已恢复。保护 ssh 访问的其他方法可能包括更改默认 ssh 端口、实施防火墙规则来过滤 ssh 端口以及使用 TCP 包装器来过滤客户端。
结论:
根据您的物理环境和安全策略等其他因素,可能建议使用 ssh 密钥身份验证方法而不是密码登录。由于密码不会发送到服务器进行身份验证,因此这种方法在中间人或嗅探攻击之前更安全;这也是防止 ssh 暴力攻击的好方法。密钥认证的主要问题是设备必须存储私钥;如果您需要从新设备登录,可能会感到不舒服。另一方面,这可能被视为安全优势。
此外,管理员可以使用 TCP 包装器、iptables 或 UFW 规则来定义允许或不允许的客户端并更改默认 ssh 端口。
一些系统管理员仍然更喜欢密码身份验证,因为在多个用户之间创建和分发速度更快。
从未通过 ssh 访问系统的用户可以选择删除此服务以及所有未使用的服务。
我希望这个展示如何在 Linux 中禁用密码登录的教程有用。继续关注 Linux Hint 以获取更多 Linux 技巧和教程。