我在Kubernetes群集中设置了一个Jenkins示例。该示例与Jenkins Config as Code(JCasC)使用的hashicorp vault并行运行。hashicorp vault包含kv2引擎的路径,该路径保存ssh密钥的值。
当我们部署jenkins时,我们获取ssh键值,并通过凭证插件将其设置为凭证,然后在scm中使用它来创建多分支管道。
我的问题是:运行扫描时,scm尝试使用ssh键扫描远程存储库。但是,此操作失败,并显示以下错误:
stderr: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '/var/jenkins_home/caches/gitabc123/jenkins-git-abc123.key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
我试过在pod中运行jenkins来chmod这个目录,但是这不起作用(至少在kubernetes中,我不认为我有chmod的权限).第二个问题是,这些密钥只在连接时生成,每次尝试都会生成新的密钥文件.
看起来凭据插件没有正确设置权限。有什么办法可以解决这个问题吗?凭据插件中是否需要一些配置?我的第二个猜测是我们需要以不同的格式存储ssh密钥。但是,我也尝试在jenkins中手动插入此密钥,我得到了同样的错误。
1条答案
按热度按时间zpgglvta1#
除非在Jenkins中有配置,否则要做到这一点,方法是将
umask
设置为377,这将创建具有400权限的SSH密钥文件。如果您只想对特定目录执行此操作,也可以使用
setfacl
。