Linux 中的 sshd 是什么?17 Mar 2025 | 6 分钟阅读 sshd 是 OpenSSH 的服务器进程。它借助 SSH 协议接收传入连接并充当该协议的服务器。它管理加密、文件传输、隧道、终端连接和用户身份验证。 不同 sshd 进程的角色和启动sshd 进程在系统重启时启动。通常,程序位于文件 /usr/sbin/sshd。它以 root 身份执行。启动进程作为主服务器,接收传入连接。 此进程通常是进程 ID(最低)的进程,或者是执行时间最长的进程。此外,它是所有其他 sshd 进程的父进程。以下命令可用于在 Linux 上显示进程树。很容易找到哪个是父进程
 各种其他 sshd 进程是表示单个连接的子进程。为所有新的 SSH 会话建立一个新进程。 - 当 SSH 服务器重新启动或升级时,只会重新启动主服务器。
- 服务器经过开发,因此提供现有连接的服务器进程继续运行。
- 这最大限度地减少了对用户的干扰,例如,当 Samba 服务器配置被修改时。
- 通常,重新启动 SSH 服务器最简单的方法之一是应用 service sshd restart 命令。
- 远程升级多个配置时应小心,因为错误可能会阻止再次连接到服务器。
此外,可以通过终止特定命令、终端或用户的服务器进程来终止单个进程。这可以通过例如 kill -9命令完成。 也可以在同一系统上执行多个主 sshd 进程。然而,这非常不寻常,我们发现有组织客户同时执行多个服务器,并使用不同的配置。 所有服务器都必须侦听不同的端口,并且通常会有一个不同的配置文件。 sshd 配置文件SSH 服务器包含一个配置文件,通常是 /etc/sshd/sshd_config。 此配置文件定义了日志记录、文件位置、身份验证选项、加密选项和许多其他参数。 日志记录SSH 服务器应用 syslog 子系统进行登录。有多种配置 syslog 和各种 syslog 服务器的方法。一些企业将 syslog 信息收集到集中式 SIEM 系统(安全事件和事件管理系统的缩写)中。 默认情况下,在大多数系统上,syslog 子系统可以配置为将 SSH 相关数据记录到 /var/log/auth 文件中。/var/log/auth 文件通常是大多数基于 Debian 的系统的默认日志文件。/var/log/secure 文件通常是大多数基于 Red Hat 的系统的默认日志文件。 日志记录级别和 syslog facility 都可以在服务器配置文件中配置。强烈建议将登录级别设置为 VERBOSE。因此,SSH 访问的指纹可以正确记录。 最新版本的 OpenSSH 可能会自动记录它。然而,一些 Linux 发行版带有不记录指纹的版本,除非进行此类设置。 日志文件查看各种日志文件通常可以了解问题原因。有意地,传输到客户端的消息旨在透露一些关于已登录用户的身份。这是出于安全原因。 例如,我们不希望攻击者测试目标系统上可用的用户帐户。换句话说,有关身份验证失败的更多数据通常可以在日志文件中检测到。 调试模式手动地,系统管理员可以使用选项 -d 执行服务器,以获取服务器提供的其他详细结果。通常,这是识别连接问题时的最后手段。 身份验证失败的原因通常在输出中清晰透明。可能希望在与正常服务器不同的端口上执行新服务器。 这是因为不阻止到服务器的新连接。服务器将与 sshd -d -p 2222 一起运行,之后客户端将与 ssh -p 2222 [[email protected]]host 连接。 sshd 命令行选项手动为 SSH 服务器提供命令选项非常罕见。只有重新打包 SSH 或创建新的嵌入式平台或新的 Linux 发行版的用户才会这样做。以下选项存在于 OpenSSH 中 - -4: 它只使用 IPv4 地址。它可以在 DNS 提供 IPv4 地址的环境中使用;但是,路由不适用于这些类型的选项。
- -6: 它只使用 IPv6 地址。它可用于测试以确保 IPv6 连接正常工作。
- -C connection_spec: 此选项用于测试配置文件中的特定 Match 块或与选项 -T 结合使用。connection_spec 可以定义为逗号分隔的 = 对列表,其中 可以是以下之一:addr、lport、laddr、host 或 user。可以组合并允许一个以上的 -C 选项。
- -c host_certificate_file: 此选项定义包含主机主机证书的文件的路径。此证书采用 OpenSSH 的专有格式。
- -D: 它不成为守护程序并分离。通常,它在 sshd 与 systemd 一起执行时应用。它允许在此类平台上更轻松地监控进程。
不使用此选项,SSH 服务器会从终端分离和分叉,使其本身成为后台守护程序进程。 直到最近,后者还是执行 SSH 服务器的传统形式。一些嵌入式系统仍将使用后者。 - -d: 它启用调试模式。服务器不会分叉,并且在处理单个连接后将退出。它可用于诊断用户身份验证和其他类型的问题。
通常,它提供有关问题的更多详细信息,然后将其设置为客户端。 - -E log_file: 它将日志附加到特定文件而不是将它们传输到 syslog。
- -e: 它将调试日志写入各种标准错误。它可用于调试。
- -f config_file它定义了服务器配置文件的路径。默认使用 /etc/ssh/sshd_config 文件。
- -g login_grace: 它定义了用户在打开到 SSH 服务器的连接后应该多快地进行身份验证。默认值为 120 秒,但可以在服务器配置文件中修改。超时永久限制通过启动到服务器的未经身份验证的连接来保留服务器上的资源。
- -i: 当服务器使用 inetd 执行时将使用它。但是,现在没有人这样做。
- -h host_key_file: 它定义了一个文件,通过该文件读取主机密钥。我们可以使用文件 /etc/ssh/ssh_host_ 作为默认值。所有算法只能定义一个主机密钥。
- -k timeout: 这是一个已废弃的选项。此选项与 SSH 的 1 版本一起应用。强烈不建议使用它。
- -o options: 它覆盖配置文件中描述的配置选项。它有助于在不同的端口上测试和运行多个服务器。
- -p port: 它定义服务器接收的端口。默认端口是 22。端口也可以在服务器配置文件中描述。
- -q: 它不会将任何内容传输到系统日志。不建议这样做。这种类型选项的实际用途之一是各种攻击者隐藏带有后门的登录。实际上,这个选项不应该存在。
- -T
它读取服务器配置文件,检查语法,然后退出。它有助于在重启服务器之前检查配置文件是否正常。 特别是,远程更新配置时检查配置文件至关重要。在这种情况下,最好通过在新端口上执行第二个服务器来测试新配置,并且只有在成功通过测试服务器登录后才重新启动主服务器。 它可以与 -C 选项结合使用,以测试配置文件中的单个 Match 块。 - -t: 它检查配置文件和引用的密钥的有效性。有关远程重启服务器之前进行额外测试的建议,请参阅 -T 选项。
- -u len: 此选项只有一个有用的目标:描述 -u0 原因点分 IP 地址保存在 utmp 文件中。
当 authorized_keys 中的 from=patterns 或身份验证技术不需要它们时,它还会禁用 SSH 服务器的 DNS 查找。
|