我想编写一个运行可执行映像而不创建新进程的程序...我想这样做是因为我想使用plink将密码发送到远程ssh服务器......
plink程序发送命令行中提供的密码。如果我使用fork和exec函数,有人可以使用process explorer或ps -aef或cat / proc // cmdline查看命令行中提供的密码。如何避免这个安全漏洞......这个程序必须在linux和windows上运行..
答案 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)
并且不,我不知道在没有创建新流程的情况下调用另一个程序的方法。