我有SSH后端工作,并且正在考虑使用SSH-OTP身份验证连接Jenkins,以便删除部署密钥也是如此。
我查看了用于保险库的Jenkins插件,但它们仅用于从Vault中获取机密。
是否有用于此目的的插件或任何Jenkins黑客,否则,是否有可能自己写一个?
注意:现在,Jenkins使用SSH密钥。我想消除密钥的使用,并配置Jenkins在每次需要SSH到某个主机进行部署时从Vault获取SSH OTP。
#1 楼
我查看了用于Vault的Jenkins插件,但它们仅用于从Vault中获取机密。
这取决于当前配置用于部署应用程序的方式。
https://github.com/jenkinsci/hashicorp-vault-plugin
如果使用Jenkins管道,则可以使用在其中定义的keyId替换keyId Hashicorp保险库。
node {
// define the secrets and the env variables
def secrets = [
[$class: 'VaultSecret', path: 'secret/testing', secretValues: [
[$class: 'VaultSecretValue', envVar: 'testing', vaultKey: 'value_one'],
[$class: 'VaultSecretValue', envVar: 'testing_again', vaultKey: 'value_two']]],
[$class: 'VaultSecret', path: 'secret/another_test', secretValues: [
[$class: 'VaultSecretValue', envVar: 'another_test', vaultKey: 'value']]]
]
// optional configuration, if you do not provide this the next higher configuration
// (e.g. folder or global) will be used
def configuration = [$class: 'VaultConfiguration',
vaultUrl: 'http://my-very-other-vault-url.com',
vaultCredentialId: 'my-vault-cred-id']
// inside this block your credentials will be available as env variables
wrap([$class: 'VaultBuildWrapper', configuration: configuration, vaultSecrets: secrets]) {
sh 'echo $testing'
sh 'echo $testing_again'
sh 'echo $another_test'
}
}
评论
您能解释一下什么不起作用吗?如果使用缩写,请在第一次定义它们。同时,我假设您在谈论OTP时是指一次性SSH密码。您还可以添加已阅读到该问题的文档链接。
你能指出你是否解决了这个问题?