3

ssh 命令行命令提示用户输入密码,如下所示:

密码:

在 C 中,当我这样做时:

system("ssh name@host");
system("password");

命令行将提示用户并忽略来自我的程序的任何输入。它似乎总是接受用户输入的输入。有没有办法将我放入标准输出的输出重定向并将其通过管道传输到 ssh 的密码提示中?

我尝试了很多方法,从上面到将 ssh 视为文件指针,如下所示:

FILE *ssh = popen("ssh -t -t -S -o StrictHostKeyChecking=no name@host", "w");

然后写入该文件指针,但似乎没有任何工作。

4

3 回答 3

3

的确。SSH 将/dev/tty直接打开并从中读取密码,因此您无法以这种方式传递任何输入。libssh2正如shiplu所说,除了使用之外,我不知道没有办法覆盖这种行为。

于 2012-12-31T04:05:19.523 回答
2

当您正在编码时,请C 考虑使用libssh2。请参阅此示例

这里有更多的例子。

于 2012-12-31T04:04:10.423 回答
0

有另一种方法可以解决您的问题 -ssh-keygenssh-copy-id.

本质上,您将公钥复制到主机一次;在此之后的任何连接上,ssh将自动使用其私钥登录。

ssh-keygen

点击进入 3 次。跑:

ssh-copy-id user@host

并输入您的密码。

而已。

于 2012-12-31T04:12:46.053 回答