빌드 중에 SSH를 사용하는 방법

프로젝트에서 빌드하는 동안 때로 다른 컴퓨터를 연결해야 할 수 있습니다. SSH를 통해 원격 시스템에서 배포 스크립트를 트리거하는 경우를 예로 들 수 있습니다.

그 방법을 알아보겠습니다.

SSH를 사용하는 이유는?

SSH(Secure Shell)는 보안, 다양성 및 효율성의 장점을 내세워 다양한 목적으로 널리 사용됩니다. SSH를 사용해야 하는 몇 가지 이유가 있습니다.

  • 보안 통신. SSH는 안전하지 않은 네트워크(예: 인터넷)에서 암호화된 통신을 제공하여 전송 중 데이터의 기밀성과 무결성을 보장합니다.
  • 인증. SSH는 사용자 인증에 공개 키 암호화를 사용하여 비밀번호 기반의 인증을 보다 안전하게 대체합니다. 이는 무단 액세스를 방지하는 데 도움을 줍니다.
  • 원격 액세스. SSH를 사용하면 명령줄 인터페이스를 제공하거나 파일 전송(예: SCP 또는 SFTP와 같은 도구 사용)을 통해 사용자가 원격 서버나 시스템에 안전하게 액세스할 수 있습니다.
  • 터널링. SSH는 임의의 네트워크 연결을 전달하기 위한 보안 터널을 생성하여 원격 네트워크의 데이터베이스 또는 웹 서버와 같은 서비스에 안전하게 액세스할 수 있게 해줍니다.
  • 키 관리. SSH는 인증 보안을 단순화하고 강화하는 SSH 키 사용을 지원합니다. 또한 키 쌍을 통한 액세스 관리도 가능합니다.

TeamCity에서 SSH 키를 업로드하는 방법

Edit configuration(구성 편집) | Build Steps(빌드 단계)로 이동하여 빌드 단계를 간단히 살펴보세요.

tutorials-img

배포를 실행하는 명령줄 빌드 단계를 추가한다고 생각해 보겠습니다. 이를 위해 TeamCity는 SSH를 통해 원격 서버에 연결하고 해당 서버에서 몇 가지 명령어를 실행합니다. Amazon S3에서 파일을 다운로드하고 실행하는 예를 들 수 있습니다. SSH 연결이 작동하려면 SSH 키를 지정해야 합니다.

tutorials-img

여기서 의문이 생깁니다. SSH 키가 에이전트 이미지에 미리 구워지지 않았다면 빌드 에이전트에 어떻게 전달될까요?

우리가 원하는 것은 명령줄 빌드 단계를 없애는 것입니다. 이를 위해 Runner type(러너 타입) 드롭다운 메뉴를 클릭합니다. 여기에서 SSH ExecSSH Upload(SSH 업로드)의 두 가지 옵션을 확인할 수 있습니다.

SSH Exec은 원격 시스템에서 무언가를 실행하려는 경우에 편리합니다. SSH Upload(SSH 업로드)는 파일을 서버에 안전하게 업로드하는 도움을 줍니다.

SSH Exec 옵션을 선택하고 러너에 대한 대상과 명령어를 추가해 보겠습니다.

tutorials-img

여기 Authentication method(인증 방법)에서 SSH 키의 출처를 선택할 수 있는 몇 가지 선택 사항이 있습니다.

tutorials-img

Uploaded key(업로드된 키): 키가 TeamCity 서버에 업로드됩니다. 서버는 이를 암호화하여 빌드 에이전트로 보내 빌드하도록 하고, 빌드가 완료되면 삭제합니다.

Default private key(기본 비공개 키)Custom private key(사용자 지정 비공개 키): 빌드 에이전트의 특정 위치에 기본 비공개 키가 사전 설치된 경우 이 옵션을 선택합니다.

사용자 이름-비밀번호 조합을 선택하거나 SSH 에이전트를 실행할 수도 있습니다. 관련 문서에서 SSH Exec에 대해 자세히 알아보세요.

이 튜토리얼에서는 Uploaded key(업로드된 키) 옵션을 사용하겠습니다. 사용자 이름을 teamcity-deploy로 설정하고 비밀구절 설정을 건너뜁니다. 그런 다음 계속해서 SSH 키를 업로드합니다.

tutorials-img

SSH 키를 업로드하기 위해 Buildpipelines project(Buildpipelines 프로젝트) | SSH Keys(SSH 키)로 이동하겠습니다. 그런 다음 서버의 비공개 키를 선택합니다. Upload SSH Key(SSH 키 업로드)를 클릭하고 컴퓨터에서 파일을 선택합니다.

tutorials-img

그런 다음 Build steps(빌드 단계) | SSH Exec로 돌아가 방금 업로드한 비공개 키를 선택합니다. 이제 Save(저장)를 누르고 빌드를 실행합니다.

tutorials-img

빌드 실행이 완료되고 Build Log(빌드 로그)를 열면 SSH Exec 빌드 단계의 출력이 표시됩니다. 여기에서 TeamCity가 빌드 단계 구성에 입력된 명령어를 실행한 것을 볼 수 있습니다. 여기에 echo ‘running deploy.sh...’ 명령어의 결과도 표시됩니다.

tutorials-img

이제 작업을 마쳤습니다!