Profile picture

[Jenkins] SSH Agent를 활용한 원격서버 접근 방법

JaehyoJJAng2025년 12월 24일

개요

Jenkins에서 원격 서버에 접근하여 명령어를 실행하기 위해서 SSH Agent를 어떻게 사용하는지, 그 방법을 정리해보려고 합니다.


사전 준비

실습 진행을 위해서 Jenkins가 설치되어 있어야 합니다!

위 깃허브 가이드를 참고하여 Jenkins를 도커로 설치해주세요.




SSH Agent

SSH Agent는 SSH 키를 관리하거나, 원격 서버에 대한 인증을 자동화할 수 있는 도구입니다.


젠킨스에서는 SSH Agent라는 별도의 플러그인을 통하여 Pipeline에서 SSH 키를 사용할 수 있고,

이를 통해서 직접 원격 서버에 접근하여 명령어를 실행하거나 파일 등을 전송할 수 있습니다.

<br.

SSH Agent 설치

Jenkins를 문제없이 설치하셨다면 SSH Agent라는 플러그인을 별도로 설치해주셔야 합니다!


image
왼쪽 메뉴의 Available plugins에서 SSH Agent를 검색하여 인스톨 버튼으로 설치가 가능합니다.

저는 이미 설치가 되어있기 때문에 Installed Plugins에 위 사진처럼 나오고 있네요.




SSH 키 생성


원격 서버측에서 ssh-keygen 명령어로 키 페어를 생성해주도록 하겠습니다.

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

생성된 .pub키는 ~/.ssh/authorized_keys에 등록해주세요.




Jenkins에 SSH 인증 정보 등록

원격 서버측에서 생성된 Private key 정보를 Jenkins SSH 인증 정보에 등록해줄겁니다.


젠킨스의 SSH Agent에서 해당 키 정보를 바탕으로 원격 서버와 키를 대조한 후,

키 페어가 검증이 된다면 원격 서버로 정상적으로 접근이 될겁니다.


Jenkins 관리 -> Credentials -> Global credentials로 이동하여 "Add Credentials`를 클릭해주세요.
image


  • Kind: SSH Username with private key
  • Scope: Global
  • ID: 원하는 ID
  • Username: 원격 서버의 접속하고자 하는 사용자 이름
  • Private Key: Enter directly를 선택하고, 생성한 개인 키(~/.ssh/id_rsa) 내용을 붙여주면 됩니다.

Jenkins Pipeline - SSH Agent 사용해보기

젠킨스 파이프라인을 다음과 같이 작성하고 테스트해봅시다.

pipeline {
    agent any

    stages {
        stage('Test echo') {
            steps {
                // SSH Agent를 사용하여 원격 서버에 접속
                sshagent(credentials: ['ssh-agent-private-key']) {
                    // 원격 서버에서 명령어 실행
                    sh """
                        ssh -o StrictHostKeyChecking=no jhlee37@192.168.219.111 '
                            echo Hello, jhlee37!
                        '
                    """
                }
            }
        }
        
        // 여러 명령어를 실행
        stage('Test Multiple Commands') {
            steps {
                sshagent(credentials: ['ssh-agent-private-key']) {
                    sh """
                        ssh -o StrictHostKeyChecking=no jhlee37@192.168.219.111 '
                            echo "Hello, jhlee37!"
                            echo "Test Completed!!!!!"
                        '
                    """
                }
            }
        }
    }
}
  • StrictHostKeyChecking=no 옵션을 사용하여서 호스트 키 확인을 비활성화할 수 있습니다!

빌드 결과는 어떤지 볼까요?
image
성공이네요!

    Tag -

Loading script...