第 5 章 使用 OpenSSH 的两个系统间使用安全通讯
SSH(Secure Shell)是一种协议,它使用客户端-服务器架构在两个系统之间提供安全通信,并允许用户远程登录到服务器主机系统。和其它远程沟通协议,如 FTP 或 Telnet 不同,SSH 会加密登录会话,它会阻止入侵者从连接中收集未加密的密码。
Red Hat Enterprise Linux 包括基本的 OpenSSH
软件包:通用的 openssh
软件包、openssh-server
软件包以及 openssh-clients
软件包。请注意,OpenSSH
软件包需要 OpenSSL
软件包 openssl-libs
,它会安装几个重要的加密库来启用 OpenSSH
对通讯进行加密。
5.1. SSH 和 OpenSSH
SSH(安全 Shell)是一个登录远程机器并在该机器上执行命令的程序。SSH 协议通过不安全的网络在两个不可信主机间提供安全加密的通讯。您还可以通过安全频道转发 X11 连接和任意 TCP/IP 端口。
当使用 SSH 协议进行远程 shell 登录或文件复制时,SSH 协议可以缓解威胁,例如,拦截两个系统之间的通信和模拟特定主机。这是因为 SSH 客户端和服务器使用数字签名来验证其身份。另外,所有客户端和服务器系统之间的沟通都是加密的。
主机密钥验证使用 SSH 协议的主机。当首次安装 OpenSSH 或主机第一次引导时,主机密钥是自动生成的加密密钥。
OpenSSH 是 Linux、UNIX 和类似操作系统支持的 SSH 协议的实现。它包括 OpenSSH 客户端和服务器需要的核心文件。OpenSSH 组件由以下用户空间工具组成:
-
ssh
是一个远程登录程序(SSH 客户端). -
sshd
是一个 OpenSSH SSH 守护进程。 -
scp
是一个安全的远程文件复制程序。 -
sftp
是一个安全的文件传输程序。 -
ssh-agent
是用于缓存私钥的身份验证代理。 -
ssh-add
为ssh-agent
添加私钥身份。 -
ssh-keygen
生成、管理并转换ssh
验证密钥。 -
ssh-copy-id
是一个将本地公钥添加到远程 SSH 服务器上的authorized_keys
文件中的脚本。 -
ssh-keyscan
可以收集 SSH 公共主机密钥。
在 RHEL 9 中,安全复制协议(SCP)默认替换为 SSH 文件传输协议(SFTP)。这是因为 SCP 已经造成安全问题,如 CVE-2020-15778。
如果您的环境无法使用 SFTP 或存在不兼容的情况,您可以使用 -O
选项来强制使用原始 SCP/RCP 协议。
如需更多信息,请参阅 Red Hat Enterprise Linux 9 文档中的 OpenSSH SCP 协议弃用 。
现有两个 SSH 版本: 版本 1 和较新的版本 2。RHEL 中的 OpenSSH 套件仅支持 SSH 版本 2。它有一个增强的密钥更改算法,它不会受到已知在版本 1 中存在的安全漏洞的影响。
OpenSSH 作为 RHEL 的核心加密子系统之一,使用系统范围的加密策略。这样可确保在默认配置中禁用弱密码套件和加密算法。要修改策略,管理员必须使用 update-crypto-policies
命令来调整设置,或者手动选择不使用系统范围的加密策略。
OpenSSH 套件使用两组配置文件:一个用于客户端程序(即 ssh
、scp
和 sftp
),另一个用于服务器( sshd
守护进程)。
系统范围的 SSH 配置信息保存在 /etc/ssh/
目录中。用户特定的 SSH 配置信息保存在用户主目录中的 ~/.ssh/
中。有关 OpenSSH 配置文件的详细列表,请查看 sshd(8)
man page 中的 FILES
部分。
其他资源
-
使用
man -k ssh
命令显示 man page - 使用系统范围的加密策略