我正在维护我们公司的一个应用程序(用C#编写),它运行在跳线上,并提供跨不同服务器搜索和启动到该服务器的PuTTY连接的功能。为此,应用程序当前启动PuTTY进程并传递参数,如主机名、用户名和密码。从密码管理器服务中检索每个服务器的密码。参数通过命令行接口传递给PuTTY。因此,应用程序的目的是自动检索密码和登录到不同的服务器。
当前方法的问题是,在Windows中,管理员可以将所有已启动的PuTTY实例和相应的凭据作为命令行参数。
到目前为止,我还没有找到任何实际的解决方案来规避这个问题。到目前为止,我研究的内容如下:
SendKeys在promt中键入密码:不可靠,因为无法读取PuTTY输出,也无法知道应用程序何时准备好输入输入。使用Plink而不是PuTTY并通过stdin传递参数的一些可能有用的想法:
如有任何进一步建议,将不胜感激。您是否知道其他Windows替代PuTTY的方法,它支持以更安全的方式传递凭据?
发布于 2022-02-21 07:10:58
按照Martin的建议,我创建了一个最小的示例,它在NamedPipe中创建了一个C#,并将它作为pwfile参数传递给PuTTY:
public void CreatePipe()
{
var server = new NamedPipeServerStream("SecretPipe");
server.WaitForConnection();
StreamWriter writer = new StreamWriter(server);
writer.Write("top!!secret");
writer.Flush();
server.Dispose();
}然后,可以以管道作为PuTTY参数启动如下所示:
putty.exe -l testuser -pwfile "\\.\PIPE\SecretPipe" hostname发布于 2022-02-11 18:57:27
从0.77开始,PuTTY可以使用-pwfile switch从文件中读取密码。
https://stackoverflow.com/questions/71084301
复制相似问题