Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.3.11. 保护 SSH

Secure Shell(SSH )是一个功能强大的网络协议,用于通过安全通道与其他系统通信。通过 SSH 传输是加密的,并防止拦截。有关 SSH 协议以及 Red Hat Enterprise Linux 7 中使用 SSH 服务的一般信息,请参阅 Red Hat Enterprise Linux 7 系统管理员指南中的 OpenSSH 章节。
重要
本节旨在介绍保护 SSH 设置的最常用方法。此推荐措施列表不得被视为详尽或确定性。有关基本 SSH 概念的说明,请参阅 sshd_config(5),了解可用于修改 sshd 守护进程行为的所有配置指令的说明

4.3.11.1. 加密登录

SSH 支持使用加密密钥登录到计算机。这比仅使用密码更安全。如果将此方法与其他身份验证方法相结合,可以将其视为多因素身份验证。有关使用多种验证方法的详情,请查看 第 4.3.11.2 节 “多种身份验证方法”
要启用加密密钥以进行身份验证,/etc/ssh/sshd_config 文件中的 PubkeyAuthentication 配置指令需要设置为 yes。请注意,这是默认设置。将 PasswordAuthentication 指令设置为 no,以禁用使用密码登录的可能性。
可以使用 ssh-keygen 命令生成 SSH 密钥。如果在没有附加参数的情况下调用,它会创建一个 2048 位 RSA 密钥集。默认情况下,密钥存储在 ~/.ssh/ 目录中。您可以使用 -b 参数来修改密钥的位级。使用 2048 位密钥通常已足够。《红帽企业 Linux 7 系统管理员指南》中的配置 OpenSSH 章节包含有关生成密钥对的详细信息。
您应在 ~/.ssh/ 目录中看到两个密钥。如果您在运行 ssh-keygen 命令时接受默认值,则生成的文件分别命名为 id_rsaid_rsa.pub,并且包含私钥和公钥。您应始终防止私钥被除文件的所有者以外的任何人读取。然而,公钥需要传输到您要登录的系统。您可以使用 ssh-copy-id 命令将密钥传输到服务器:
~]$ ssh-copy-id -i [user@]server
此命令还会自动将公钥附加到服务器上的 ~/.ssh/authorized_keys 文件中。当您尝试登录服务器时,sshd 守护进程将检查此文件。
与密码和任何其他身份验证机制类似,您应该定期更改 SSH 密钥。执行此操作后,请确保从 authorized_keys 文件中删除所有未使用的密钥。