【问题标题】:Secure connect with remote host and check与远程主机安全连接并检查
【发布时间】:2012-02-27 20:52:20
【问题描述】:
我需要用 C 语言编写一个程序来检查远程文本文件中计算机 MAC 地址的出现情况。
是否有任何简单易用的 ssh 库允许程序连接到远程主机并检查文件是否包含某些内容?
或者我应该使用system()函数在远程主机上运行ssh和简单的命令。
它应该是安全的,所以我可能需要使用公钥。是否可以使用来自不同计算机的相同公钥(每台计算机都使用我的程序)?
我需要检查是否允许具有给定 MAC 地址(或其他标识符)的计算机执行某些操作。而且这个操作应该是远程的,所以我可以远程启用/禁用功能。
【问题讨论】:
标签:
c
security
ssh
public-key
【解决方案1】:
1) 我不知道这是否简单,但有来自 IIRC 的 http://www.libssh.org/,与做 cURL 的人相同
2) 是的,您可能应该通过 shell 脚本的“系统函数”(或 system/popen,如果您绝对需要在 C 程序中获取结果)来执行此操作,因为这将为您节省很多麻烦重新实现的东西。
3) 公钥,是的;虽然可以在多个主机/用户上重用公钥,但这不是一个好的安全实践;更好的是为每个用户/主机生成一个密钥对,然后将公钥添加到您需要连接的机器上的 .ssh/authorized_keys 中。这意味着撤销密钥只是删除单个文本文件中的一行,而不是为多个主机重新生成密钥。但是,如果它不是安全敏感的,或者如果在这种情况下安全性无关紧要(!),那么使用单个密钥可能不会太疯狂。也就是说,如果您需要多个客户端来检查单个主机上是否存在;如果没有,请更新您的问题,以便在这方面更清楚。