繁体   English   中英

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

[英]Send Data From C program to Command Line Password Prompt

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

密码:

在C中,当我这样做时:

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

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

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

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

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

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

C编码时考虑使用libssh2 这个例子

还有更多的例子在这里

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

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

ssh-keygen

点击进入3次。 跑:

ssh-copy-id user@host

然后输入您的密码。

而已。

暂无
暂无

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

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