Red Hat Training

A Red Hat training course is available for RHEL 8

第 1 章 使用 OpenSSH 的两个系统间使用安全通讯

SSH(Secure Shell)是一种协议,它使用客户端-服务器架构在两个系统之间提供安全通信,并允许用户远程登录服务器主机系统。和其它远程沟通协议,如 FTP 或 Telnet 不同,SSH 会加密登录会话,它会阻止入侵者从连接中收集未加密的密码。

Red Hat Enterprise Linux 8 包括基本的 OpenSSH 软件包:常规 openssh 软件包、open ssh-server 软件包和 openssh-clients 软件包。请注意,OpenSSH 软件包需要 OpenSSL 软件包 openssl-libs,它会安装几个重要的加密库来启用 OpenSSH 对通讯进行加密。

1.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-addssh-agent添加私钥身份
  • ssh-keygen 生成、管理并转换 ssh 验证密钥
  • ssh-copy-id 是一个在远程 SSH 服务器的 authorized_keys 文件中添加本地公钥的脚本
  • ssh-keyscan - 收集 SSH 公共主机密钥

现有两个 SSH 版本: 版本 1 和较新的版本 2。Red Hat Enterprise Linux 8 中的 OpenSSH 套件只支持 SSH 版本 2,其增强的密钥交换算法不会受到版本 1 中已知漏洞的影响。

OpenSSH,作为 RHEL 核心加密子系统之一使用系统范围的加密策略。这样可确保在默认配置中禁用弱密码套件和加密算法。要调整策略,管理员必须使用 update-crypto-policies 命令更严格或者更松一些设置,或者手动选择不使用系统范围的加密策略。

OpenSSH 套件使用两组不同的配置文件:用于客户端程序(即 sshscpsftp)的配置文件,和用于服务器(sshd 守护进程)的配置文件。系统范围的 SSH 配置信息保存在 /etc/ssh/ 目录中。用户特定的 SSH 配置信息保存在用户主目录中的 ~/.ssh/ 中。有关 OpenSSH 配置文件的详细列表,请查看 sshd(8) man page 中的 FILES 部分。

其它资源