`sshd` 如何执行登录活动?

`sshd` 如何执行登录活动?

https://unix.stackexchange.com/a/489913/674

使用 SSH 连接算作登录。

如何以进程所有者的身份运行进程或在不登录的情况下成为其所有者?

使用SSH连接,不涉及login

如何sshd执行登录活动?不是通过调用login程序来完成的吗?

虽然没有直接显示 ssh,但 APUE 显示了如何工作的图rlogin,并且还说明

rlogind我们显示了服务器和登录 shell之间对 exec 的两次调用,因为login程序通常在两者之间来验证用户。

还要执行登录sshd吗?exec login

谢谢。

在此输入图像描述

答案1

您提供的图表与 、rlogin和其他向用户提供交互式 shell 的基于网络的进程的高级路径几乎相同。telnetssh

接受连接的守护进程将执行身份验证。成功后,它将为交互式用户会话分配一个 pty,并创建子(用户)会话来与 pty 对话。然后守护进程处理 pty 和网络之间的通信。

在登录时,守护进程还可以执行其他内务功能(例如更新、lastlogin审计日志等)。有一个utmpwtmp很多执行的后台任务的数量。

sshd可以通过多种不同的方式进行配置;有一个UseLogin可用于创建用户会话的参数。默认为“否”

% sudo grep UseLogin /etc/ssh/sshd_config
#UseLogin no

yes不建议将此设置为(例如在 sshd_config 中使用登录

答案2

APUE 有点过时,或者它不太适合现代 Linux 用户空间(它仍然是 UNIX,而不是现代 Linux Distro)。

在现代 Linux 发行版上,SSH 服务器通过网络对您进行身份验证并创建会话(通过与会话管理器对话)来登录您。远程会话(如图片的一部分所示)通过登录管理器将您的输入数据从网络套接字转发到 pty master 来工作,因此 shell 可以通过 pty 从设备工作。 Pty 完全是另一个话题。

您的图片真正显示的是旧系统,其中根本没有会话管理器。就像斯蒂芬在另一个答案中所说的那样,这只是形成了完全不同类型的“会话”。

在现代系统中,会话通常都是由会话管理器创建的,这为管理员用户提供了更简单的结构。

相关内容