繁体   English   中英

SSH如何在Linux上提示输入用户名和密码

[英]How does SSH prompt for user name and password on Linux

我正在创建一个在多个远程 Linux 设备上运行的应用程序,并且有一个中央管理员来管理这些设备。 我正在添加一项功能,以便用户可以在中央管理员中打开终端 window 到远程设备。 它的工作原理很像使用 SSH 客户端远程访问服务器,除了我使用中央管理员和设备之间的现有通信通道,因此我根本不需要使用 SSH 协议。

我大部分时间都在工作。 我在设备上创建了一个伪终端 (pty),并在 pty 和在中央管理员上运行的终端客户端之间传送输出/输入。

我无法弄清楚的一个部分是 SSH 如何使用 putty 之类的客户端提示输入用户名和密码。 这是伪终端中的 shell 提示的内容,还是客户端进行提示并将其传递给 SSH 服务器?

如果 shell 提示输入用户和/或密码,那么 shell 命令是做什么的? 我用 su 和 sudo 尝试了很多东西,但还没有弄清楚。

如果客户端在创建shell之前提示,那么SSH服务器如何认证用户和密码? 使用哪些库调用来执行此操作?

如果有人对在哪里查找此信息有任何建议,请分享。

PuTTY 实现了 SSH,其中一部分是实现身份验证交换。 对于允许密码身份验证的服务器,如果使用密钥的初始尝试失败,SSH 通常会提示输入密码。

这可能是 PuTTY 的 SSH 实现的一个特性。 换句话说,要显示该提示,您必须公开有效的 SSH 服务。

如果您正在运行纯文本 TCP 服务,您可能希望这样做至少对其进行加密。

在查看 OpenSSH 的源代码 ( https://github.com/openssh/openssh-portable ) 中有代码提示输入用户和密码,然后验证凭据。 提示是通过终端界面完成的。

所以我相信我的问题的答案是我在远程 Linux 设备上运行的服务器需要向 xterm 客户端发送终端命令以提示输入凭据。 然后验证这些凭据并在用户上下文中启动伪终端。

此功能未内置在 shell 中,也未内置在终端客户端中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM