问题描述
我正在尝试使用存储在Hashicorp Vault中的ssh私钥来SSH到Jenkins Pipeline中的某些服务器。我有以下代码
stage('Syncing Scripts') {
steps {
script {
withVault([configuration: vaultConfiguration,vaultSecrets: vaultSecrets]) {
remoteCommands.copyLocalDirToServer(credentials,"server_files/*","${username}@${host}","~/server_path")
}
}
}
}
remoteCommands
的库代码
void copyLocalDirToServer(String credentials,String localDir,String server,String remoteDir,int timeoutSec=10) {
sshagent(credentials : [credentials]) {
checkConnectivity(credentials,server,timeoutSec)
sh "scp -r ${localDir} ${server}:${remoteDir} "
}
}
username
,host
是通过保险柜绑定的两个环境变量。 credentials
当前是指存储在Jenkins凭证中的ssh密钥。管道正在工作。
保管箱应该是事实的唯一来源。 ssh密钥存储在Vault中,我可以获取它们。但是问题是我从Vault中的环境变量中获取了一个字符串。我不确定如何将其传递给ssh命令。创建文件以传递给ssh命令,不建议将ssh密钥以纯文本形式放在Jenkins上。
为避免这种情况,我不得不在Jenkins凭据中复制ssh密钥。我想避免这种重复。
将从秘密提供者(例如Vault)获取的ssh秘密密钥传递给在Jenkins Pipeline中运行且不影响安全最佳实践的ssh命令的可行解决方案是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)