在 sshd_config 中使用登录

在 sshd_config 中使用登录

我正在查看 sshd_config 文件,发现了以下内容:

#Uselogin no

我知道它被评论了,但上面没有任何解释,当我用谷歌搜索它时,我得到了这个:

不要使用传统的login(1) 服务来登录用户。因为我们使用权限分离,所以一旦用户登录,login(1) 服务就会被禁用。

或者

指定login(1) 是否用于交互式登录会话。默认为“否”。请注意,login(1) 永远不会用于远程命令执行。另请注意,如果启用此功能,X11Forwarding则会被禁用,因为 login(1) 不知道如何处理 xauth(1) cookie。如果UsePrivilegeSeparation 指定,则在认证后将被禁用。

据了解,no阻止 ssh 使用“传统登录”,但我找不到任何有关“传统”登录的信息。

有人可以解释一下它的作用吗?

答案1

好吧,我们在这里需要一些历史,早在访问 UNIX 机器的主要方式是终端和串行线的时候,有四个程序涉及登录。它们是 init、getty、login 和 shell。 init 启动 getty 并保持其运行。 getty 打开一个串行端口(可能还执行调制解调器特定的操作),然后显示登录提示并等待输入用户名。当输入用户名时,getty 使用用户名运行登录,然后登录将提示输入密码,执行帐户操作,然后运行 ​​shell,此时您就可以使用系统了。这仍然在数据中心、虚拟机和许多其他地方使用。

接下来是远程登录。 Telnet 不使用串行端口,因此情况发生了一些变化。除了 getty 之外,init 还会启动 telnetd(或 inetd 来启动 telnetd),telnetd 会获取用户名,然后运行登录,一切都会从那里开始运行。

现在安全外壳来了。现在,安全 shell 允许您无需密码即可登录(使用密钥或可能取决于 GSS 版本),因此有几种方法可以执行操作,您可以像 telnet 一样执行操作,而不使用好的功能,或者您可以让 sshd 处理登录并启动 shell,它允许您做各种很酷的事情。除非您有自定义版本的登录,否则我建议您让 sshd 处理登录。 (如果您有 pam,就没有太多理由再进行自定义登录了。)

相关内容