如果有人登录串口并退出控制台而没有注销,我如何自动注销?

如果有人登录串口并退出控制台而没有注销,我如何自动注销?

我使用的是基于 Debian 的 Linux 系统。可通过 Lantronix SLC8000 高级控制台管理器对其进行控制台访问。当我登录时,它要求输入用户名和密码(控制台管理器和服务器)

[user.USER-G9SW5Z1] ➤ ssh [email protected]
Password:
X11 forwarding request failed on channel 0

Welcome to the Lantronix SLC8000 Advanced Console Manager
Model Number: SLC8048
For a list of commands, type 'help'.

[DCE-Console-01]> connect direct deviceport 46
Connecting to Device Port 46.
Connected to port 46. Escape sequence is ESC A


Open Network Linux OS ONL-3.1.1, 2019-11-19.15:58-3bcc913
localhost login: root
Password:
Last login: Thu Jan  6 21:28:51 UTC 2000 from 172.27.173.173 on pts/3
Linux localhost 4.14.109-OpenNetworkLinux #1 SMP Tue Nov 19 16:21:40 UTC 2019 x86_64

但在那之后我只是突然关闭会话(没有“退出”或“注销”)

接下来,当我尝试登录时,它不会要求我提供登录信息(用户名/密码)

[user.USER] ➤ ssh [email protected]
Password:
X11 forwarding request failed on channel 0

Welcome to the Lantronix SLC8000 Advanced Console Manager
Model Number: SLC8048
For a list of commands, type 'help'.

[DCE-Console-01]> connect direct deviceport 46
Connecting to Device Port 46.
Connected to port 46. Escape sequence is ESC A

root@localhost:~#
root@localhost:~#

它应该再次询问我服务器的用户名和密码。问题出在哪里以及如何解决这个问题?

PS:看起来系统正在存储屏幕一段时间。但有办法阻止这种情况吗?

答案1

你即将学到一些在过去几十年里许多人不得不学习的东西,有时是从痛苦的经历中学习的:关闭本地终端并不意味着注销。

在 Unices 和 Linux 操作系统的世界中,串行终端有两种类型:拨入终端和本地终端。例如,拨入串行终端的标记如BSD 上的表dialin所示。/etc/ttys本地串行终端未标记。 (Linux 操作系统有该/etc/ttys表,但应用程序是否遵守该表有很大差异。将终端标记为拨入终端或本地终端有点复杂,标准化程度较低,并且取决于选择运行的软件。)

拨入终端在它和主机之间有调制解调器之类的东西。调制解调器处理串行控制线路,例如载波检测和数据终端就绪。挂断远程端会导致载波检测信号丢失,对于拨入终端而言,这会导致线路规则HUP向登录会话的会话领导进程发送(挂断)信号,该信号又会处理将其反映到所有远程终端的情况。它的孩子。拨入终端在其线路规则中有-clocal标志(使用术语)。stty

本地终端直接连接到主机。本地航站楼的clocal航线规则中都有该标志。没有可检测的运营商,关闭终端并不等于挂断电话。

对于主机而言,您的 SLC8000 只是一个美化的串行终端。它具有本地终端的所有行为,除非它被标记为dialin在主机上。连接到不同的设备端口或从不同的设备端口断开连接不会向这些端口上的主机发出信号。将其标记为dialin在主机上,您的下一个问题是将 SLC8000 配置为在您断开连接时向主机发出信号,使用载波检测作为调制解调器,以便主机知道在登录会话上执行终端挂断。简单浏览一下 SLC8000 用户手册就会发现这甚至是不可能的。其串行插座上没有单独的 CD 引脚。

您可以在超过四十年的关于带有终端的多用户操作系统(从 Unix 到 VMS)的安全书籍中找到这些建议:离开终端时请务必注销。

相关内容