전제조건
ssh에 필요한 ssh agent가 설치 되어 있다는 전제조건으로 시작합니다.
Jenkins는 docker에서 기반으로 실행되고 있습니다.
SSH 인증키는 jenkins가 설치된 서버에서 생성합니다.
Native로 설치된 Jenkins라면 home 디렉토리 에서 .ssh로 이동합니다. 또는 docker container로 실행된 jenkins라면 jenkins_home/.ssh 디렉토리로 이동합니다.
인증서를 생성합니다.
ssh-keygen -t rsa -b 4086
enerating public/private rsa key pair.
Enter file in which to save the key (/home/hsnam/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hsnam/.ssh/id_rsa.
Your public key has been saved in /home/hsnam/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:es3MyESZ54fFjTKE5m3VP6NONzVmaxVMG26G2BxcWRk hsnam@hsnam-ssh.localdomain
The key's randomart image is:
+---[RSA 4086]----+
| .. .o+E*|
| o+ .=+==o|
| o+.+o++.*.|
| ..oo= o*+|
| S.o . + B|
| + * . o = |
| . + = o o .|
| . . |
| |
+----[SHA256]-----+
인증키 생성시 공개키(id_rsa.pub), 비밀키(id_rsa)가 생성된다.
ssh-copy-id -i /home/hsnam/.ssh/id_rsa.pub hsnam@192.168.0.2
ssh -o StrictHostKeyChecking=no hsnam@192.168.0.2
만약 docker container로 운영중인 jenkins라면 container로 접속하여 설정하도록 하자.!
Dashboard > Credentials > System > Global credentials > Add Credentials
env.TARGET_HOST = "hsnam@192.168.0.2"
node {
try {
stage('ssh-test') {
sshagent (credentials: ['192.168.0.2-ssh']) {
sh 'ssh -o StrictHostKeyChecking=no "uptime"'
}
}
} catch (env) {
echo 'error = ' + env
throw env
}
}