in situ
Использование веб-интерфейса для этого, вероятно, безопасно достаточно почти для каждого случая использования, и его трудно превзойти по удобству.
Тем не менее, генерация закрытых ключей там, где они нужны, - это, безусловно, хороший совет, и он определенно возможен в Jenkins. Один из подходов:
- S SH на сервере Jenkins и генерация ключей
- Запустите в консоли сценариев groovy, чтобы создать учетные данные Jenkins
- Exfiltrate publi c key
- Удаление сгенерированных ключей на сервере
В этом примере на сервере Jenkins и $HOME
, и $JENKINS_HOME
указывают на /var/jenkins_home
и ключи генерируются в ~/temp
.
Генерация ключа на сервере Jenkins
ssh jenkins@my.jenkins.server
mkdir ~/temp
cd ~/temp
ssh-keygen -t rsa -b 4096 -C "some-meaningful-label" -f "./my-in-situ-key"
Это создает my-in-situ-key
и my-in-situ-key.pub
in /var/jenkins_home/temp
.
Создание учетных данных Jenkins
В консоли сценариев Jenkins:
import com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey
import com.cloudbees.plugins.credentials.CredentialsScope
import com.cloudbees.plugins.credentials.domains.Domain
def domain = Domain.global()
def store = Jenkins.instance.getExtensionList('com.cloudbees.plugins.credentials.SystemCredentialsProvider')[0].getStore()
def privateKeyString = new File('/var/jenkins_home/temp/my-in-situ-key').text
def keySource = new BasicSSHUserPrivateKey.DirectEntryPrivateKeySource(privateKeyString)
def privateKeyCredential = new BasicSSHUserPrivateKey(
CredentialsScope.GLOBAL,
"temp-stack-overflow-key", // id
"jenkins", // username
keySource, // private key
"", // passphrase
"Temporary Demo Key" // description
)
store.addCredentials(domain, privateKeyCredential)
"Credential Added"
Проверка учетных данных перед очисткой up.
Очистка
Возьмите ключ publi c и обязательно удалите закрытый ключ на выходе. дверь.
cat ~/temp/my-in-situ-key.pub
rm -rf ~/temp
Соответствует Javado c