如果使用密码登录但不使用公钥,则使用ssh到Cygwin通过CMake运行MSVC

时间:2013-07-31 19:14:54

标签: visual-c++ windows-7 cygwin openssh

我们有一个Windows 7桌面,我们希望用它来运行我们的C ++代码的Windows端口的自动测试。它已成功使用CMake构建系统,如果在本地登录,则使用Visual Studio 10.0进行编译。我们使用的自动化测试系统需要使用公钥认证ssh到构建机器,因此我安装了Cygwin并将sshd作为服务在一个单独的帐户(cyg_server)中运行。我可以很好地连接到它,使用其密码登录到构建帐户,并运行构建没有问题。但是,如果我然后添加公钥验证,我仍然可以正常登录,但是即使我已经登录并手动运行构建,构建也会失败,因此它就像工作案例一样是登录交互式bash shell !错误消息是

3>LINK : fatal error LNK1101: incorrect MSPDB100.DLL version; recheck installation of this product

每个链接步骤。

密码和公钥认证之间的环境有什么不同?请注意,在工作和失败的情况下,其他所有内容都是相同的 - 只有身份验证方法已更改,并且这是可重复的,因此它不会在特定序列中运行构建时出错。

2 个答案:

答案 0 :(得分:3)

您可能需要做的是在Cygwin bash shell中运行cyglsa-config,然后重新启动系统。您可能需要通过右键单击Cygwin shell快捷方式并选择“以管理员身份运行”来启动shell,否则cyglsa-config可能会因权限错误而失败。我遇到了同样的问题(使用不同版本的Visual C ++),cyglsa-config修复了它。

Cygwin文档的以下页面解释了与Windows安全性相关的问题:

http://cygwin.com/cygwin-ug-net/ntsec.html

相关内容从“切换用户上下文”一节开始。 它特别提到默认方法在Visual C ++中存在问题。

答案 1 :(得分:0)

我正在回答这个问题,以防其他人遇到这个问题,虽然我的'解决方案'并不理想,所以我不会接受答案,以防任何有更好方法的人遇到这个问题

由于我们登录的机器仅用于自动化测试,因此我们只需要ssh到一个帐户,我已经重新配置ssh服务以在该帐户下运行,确保它具有所需的权限,还拥有以前由cyg_server帐户拥有的/ etc和/ var中的文件的所有权。然后,这允许构建在使用公钥验证时起作用。它确实为构建帐户提供了比我想要的更多的特权!