我正在通过持续集成(TeamCity build-agent)在Windows环境中设置应用程序的自动部署,并使用cygwin + openssh来执行远程执行部分--我基本上是使用ruby的capistrano来执行一系列自定义任务。
由于构建代理是作为窗口服务运行在盒子上,所以它是无头的。该框不包含已登录的用户,因此当(例如)密钥链或选美可能被加载时,用户没有机会键入密钥的密码。
所以目前,密码在部署脚本中是硬编码的--我的意思是,在一个地方,所以它不是分散在所有地方,但是看起来,似乎必须有一个更安全的方法来做到这一点。
有人能告诉我是什么吗?:-)
更新:
发布于 2011-02-16 12:36:03
Windows环境中的SSH是一个不寻常的选项。大多数人会使用WMI来部署应用程序和管理远程系统。Jenkins(以前的Hudson)充分利用了WMI来实现这一目的,所以请看一下这里的例子。
但是,您在SSH上,所以我建议您生成没有密码的SSH密钥。
与盗取或猜测常规密码相比,更难承担或猜测(未加密的) SSH密钥。
将未加密的SSH与IP限制和日志监视结合起来,您将立即知道是否有人窃取了密钥,并试图使用被盗的密钥从另一个主机登录。
如果您还没有这样做:请考虑允许您的高值主机连接到应用程序节点的设计,而不是相反的方法。
如果你(暴露了?)节点通过SSH连接到中央服务器进行应用程序更新,请考虑使用ForcedCommand和ChrootDirectory来限制试图使用应用程序节点攻击您的黄金主机的攻击者可以使用多少数据。
https://serverfault.com/questions/236100
复制相似问题