连接到远程计算机的通常工作流程如下:
- 登录本地机器
- 启动终端窗口
- 输入“ssh[电子邮件受保护]”
- 登录远程机器
我想摆脱本地登录,并将其压缩为一个步骤。就像 VT220 终端一样。预期工作流程:
- 启动终端机(文本模式)
- 用户收到带有登录提示的 tty
- 用户输入其凭据
- 凭据在远程计算机 (r.lan) 上进行验证
- 用户将远程计算机 (r.lan) 放入 shell
上下文:我正在设计一个简单的终端应用程序,我希望一些客户使用它。该应用程序应从具有最少硬件的专用终端运行。如果我在本地运行应用程序,我只需更改登录 shell 以指向应用程序并获得所需的工作流程(用户身份验证然后直接放入应用程序)。但是,我希望此应用程序驻留在服务器上,而不是让用户与本地计算机和 ssh 显式交互。
答案1
当我在科技大学学习时(1997 年左右),当地学生会收到了一些旧的 VT220 终端和低规格 PC(例如 Intel 20 MHz 386 CPU)作为捐赠(来自大学的计算中心,我)思考)。行会室已经有一两台可以运行网络浏览器的电脑,但学生们最需要的服务只是一个 SSH 连接,可以用来阅读电子邮件和使用(基于文本的)课程注册系统。
我将终端连接到 PC,配置进程getty
以显示hostname:
提示而不是通常的login:
.然后我拿了源代码/bin/login
并做了一个修改版本。
该程序将接受作为命令行参数输入的主机名getty
(就像通常的用户名一样),然后提示输入实际用户名,然后是exec()
所需远程主机的 SSH 命令。当 SSH 命令退出时,整个“登录会话”将终止,该过程将自动重新开始,就像init
重新启动一样getty
。
相同的配置可用于本地控制台和串行终端连接。现在,每台旧 PC 都可以用作多座 SSH 信息亭!
您可以执行类似的操作,但更简单,因为您不需要主机名提示步骤。您的修改/bin/login
只需要接受已经输入的用户名并启动到特定远程计算机的 SSH 连接。然后 SSH 客户端将显示密码提示。