如何通过 makefile 或 system( ) 调用输入密码?

Zer*_*vin 1 c passwords scp makefile server

我正在开发一个与远程服务器建立连接的 C 项目。通常,这涉及使用我添加到 makefile 中的一些小终端宏来 scp 到该远程服务器的可执行文件。虽然很方便,但我无法轻松简化的唯一部分是我需要输入密码的部分。

此外,在我的代码中,我已经使用 system() 调用来完成一些次要的终端命令(例如排序)。如果需要的话,我还希望能够在这里输入密码。例如,如果我想在代码中构建一个字符串以将本地文件 scp 到远程服务器,那么让我的代码从某处提取(并使用)密码以便它实际上可以访问该服务器会非常好。

有没有对 Make 更有经验的人知道如何在 C 语言中将密码构建到 makefile 和/或 system() 调用中?如果我可以在没有任何第三方软件/库的情况下完成它,那就加分了。我正在努力使其尽可能独立。

编辑:在阅读响应时,看起来最好的策略是与服务器建立预先存在的 ssh 密钥关系,以避免通过更安全的方式进行登录过程。听起来,更多的前期工作可以减少未来的工作量,而且还具有额外的安全性。

谢谢大家的建议。

Mar*_*ler 5

解决办法是使用密码。SSH 以及 SCP 等都具有公钥身份验证,互联网上对此都有所描述。用那个。

\n

一般来说,您要解决的问题称为秘密管理,要点是您的身份验证令牌(密码、公钥、API 密钥\xe2\x80\xa6)不应该由您的应用程序软件拥有,而应由某个东西拥有指示认证层。换句话说,前进的方向实际上让 SSH 能够自行连接,而无需输入密码,方法是选择不符合要求的选项交互式身份验证方法的因此,在这里使用密码不如仅使用通常有利的方法(使用公钥对服务器进行身份验证)那么优雅。

\n

将密码作为命令行选项传递通常是一个坏主意 \xe2\x80\x93 会将这些密码泄漏到进程列表、潜在的日志条目等内容中。不要这样做。

\n