在另一个进程中运行可执行文件而不创建新进程

时间:2009-10-08 12:23:34

标签: c++ c windows linux

我想编写一个运行可执行映像而不创建新进程的程序...我想这样做是因为我想使用plink将密码发送到远程ssh服务器......

plink程序发送命令行中提供的密码。如果我使用fork和exec函数,有人可以使用process explorer或ps -aef或cat / proc // cmdline查看命令行中提供的密码。如何避免这个安全漏洞......这个程序必须在linux和windows上运行..

6 个答案:

答案 0 :(得分:7)

设置SSH服务器以使用RSA公钥/私钥身份验证而不是密码。对于SSH来说,这通常是更好的选择。请参阅http://www.google.com/search?q=set+up+ssh+rsa

答案 1 :(得分:3)

在命令行上接受密码的大多数程序也通过文件,管道或环境变量接受它。为什么不使用这些其他机制之一?

答案 2 :(得分:0)

如果您担心密码可见,则最好加密密码。加密密码对观察者没有什么价值,因此您可以使用exec()fork()等方法

答案 3 :(得分:0)

为了避免在可能被“嗅探”的地方提示输入密码或使用纯文本密码,您几乎肯定会设置公钥验证(假设您必须使用plink ...)。

使用管道也是一个很好的解决方案。

答案 4 :(得分:0)

我发现了plink wrapper for unison可以满足您的需求,主要是在plink的STDOUT上等待密码提示,然后在STDIN上提供响应。

希望这适合你

答案 5 :(得分:-1)

嗯,为什么要在开始时发送密码?使用密码加密一些文本+时间戳,然后发送给自己授权?

并且不,我不知道在没有创建新流程的情况下调用另一个程序的方法。