【发布时间】:2011-12-23 12:17:18
【问题描述】:
我有一个 C++ 类用于启动和与外部进程通信(有点类似于 Qt 的 QProcess - 我们不能使用 Qt,因为我们正在处理小型嵌入式系统)。它使用 pipe 和 dup2 系统调用来建立父进程和子进程之间的链接。问题是 - 它不适用于 ssh、scp 和其他需要密码的程序。我已经跟踪了 ssh,它似乎打开了 /dev/tty 并以某种方式使用它从命令行读取密码。有什么方法可以从我的班级输入密码或检测应用程序需要来自 stdin 以外的其他来源的输入(根本不必是可移植的)?
【问题讨论】:
-
您不想发送密码。您要做的是让 ssh 读取和使用您在 ~/.ssh 目录中的私钥
-
使用公钥认证或者看看 askpass 和 ssh-agent
标签: c++ linux process ssh pipe