将数据从C程序发送到命令行密码提示

时间:2012-12-31 03:56:00

标签: c command-line ssh

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

密码:

在C中,当我这样做时:

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

命令行将提示用户并忽略来自我的程序的任何输入。似乎总是接受用户输入的输入。有没有办法重定向我正在添加到stdout的输出并将其输入到ssh的密码提示中?

我尝试了各种各样的东西,从上面到将ssh视为文件指针,如下所示:

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

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

C 编码时,请考虑使用libssh2 。见this example

还有更多示例here

答案 2 :(得分:0)

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

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

运行

ssh-keygen

点击输入3次。运行:

ssh-copy-id user@host

输入您的密码。

就是这样。