首页 文章

Windows / Linux自动密钥交换

提问于
浏览
1

那里有一个 build masters 的问题 . :)

我有 build box ,我用它来进行连续构建以及运行 nightly unit tests . 我正在使用 Jenkins 来构建/单元测试脚本,它运行在Windows机器上,因为我们的编译器是基于Windows的 .

我们的企业解决方案之一使用带有 rabbitmqpython 代码来交换消息,以便通过故障网络同步特定数据库表 . 我有单元测试来帮助验证更新是否正确发生 .

为了对python更新进行单元测试,我需要能够停止在我的linux盒子上运行的一些服务,然后在更新python代码后重新启动它们 . 我在我的windows框和linux框之间设置了一个密钥交换,这样我就可以远程进入windows框,我可以成功运行批处理文件,它使用依赖于密钥交换的 plink 命令和 puttypageant (其中)正在后台运行) . 例如我使用plink从我的批处理文件中的命令行执行linux框上的命令 . 但是,当我尝试从Jenkins运行批处理文件时,批处理文件无法正常工作,因为在尝试运行 plink 命令时会提示输入ssh密码 .

我相信我目前的问题可以通过2个问题来概括,我希望可以对其进行验证,并希望得到纠正:

  • 我认为Jenkins可能以不同的用户身份运行或使用不同的系统凭据,因此无法像登录用户那样连接 . 如果是这种情况,我需要做什么,以便Jenkin可以在不提示输入密码的情况下正确运行 plink 命令 .

  • Pageant看起来需要在每次重新启动计算机时输入密码 . 谷歌显示了在启动时放置选美的方法,所以当你第一次登录时会收到提示,但我需要这是自动的,就像我在linux盒子上的方式一样 . 如果Windows由于Windows更新而重新启动,那么单元测试将失败,因为他们赢了't be able to connect to the linux server. Sure this only happens once a week, but over the course of a year it'会非常讨厌 .

任何有关我能解决上述两个问题的想法或想法都将不胜感激 . 如果有一个很好的替代putty用于windows和linux之间的自动密钥交换,我也有兴趣听取(我更愿意远离Cygwin与OpenSSH,但如果以上可以,可能会走这条路线'得到纠正) .

2 回答

  • 0

    我在我的Windows Jenkins盒子上使用 plink 每天与Linux进行通信,没有任何问题 .

    就像你理论化的那样,Jenkins在它自己的用户下运行(Windows默认,我认为是 SYSTEM 用户),这与你登录的会话不同,即使你登录为 Administrator . 您的身份验证密钥存储在您的( Administrator 或其他)配置文件目录中

    您需要做的是使用 Pageant 将您的密钥导出为 ppk 文件,然后使用 plink 提供此 ppk 文件的路径:

    plink -i "C:\path\to\id.ppk"

  • 1

    看起来有一种更简单的方法来做我的'm trying to do, Jenkin' s插件https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin

相关问题