소개
Ansible 은 인프라 관리 및 배포를 간소화하는 강력한 IT 자동화 도구입니다. 그러나 원격 호스트와 작업할 때 Ansible 의 기본 호스트 키 확인은 때때로 어려움을 야기할 수 있습니다. 이 튜토리얼에서는 Ansible 에서 호스트 키 확인을 비활성화하는 과정을 안내하여 원활하고 효율적인 자동화 경험을 보장합니다.
호스트 키 확인 이해
호스트 키 확인은 Ansible 의 보안 기능으로 연결하려는 원격 호스트의 신원을 확인하는 데 도움이 됩니다. 처음 원격 호스트에 연결할 때 Ansible 은 호스트의 공개 키를 known_hosts 파일 (저장된 호스트 목록) 에 저장합니다. 이후 연결 시 Ansible 은 호스트의 공개 키를 known_hosts 파일에 저장된 키와 비교하여 이전에 연결했던 원격 호스트와 동일한지 확인합니다.
이 프로세스는 공격자가 연결을 가로채 원격 호스트를 위장하는 중간자 공격을 방지하는 데 도움이 됩니다. 호스트의 신원을 확인함으로써 Ansible 은 올바른 원격 호스트와 통신하고 있음을 보장할 수 있습니다.
그러나 일부 경우 (예: 일시적인 또는 동적으로 프로비저닝된 호스트와 작업하거나 Ansible playbook 을 테스트할 때) 호스트 키 확인을 비활성화할 수 있습니다. 호스트 키 확인을 비활성화하면 연결 프로세스가 더 빠르고 편리해지지만 중간자 공격의 위험도 증가합니다.
graph LR
A[클라이언트] -- 연결 --> B[원격 호스트]
B -- 공개 키 --> A
A -- 공개 키 확인 --> C[known_hosts 파일]
| 작업 | 설명 |
|---|---|
| 연결 | 클라이언트가 원격 호스트에 연결합니다. |
| 공개 키 | 원격 호스트가 클라이언트에게 공개 키를 전송합니다. |
| 공개 키 확인 | 클라이언트가 수신한 공개 키를 known_hosts 파일에 저장된 키와 비교합니다. |
호스트 키 확인 비활성화
Ansible 에서 호스트 키 확인을 비활성화하려면 다음 방법을 사용할 수 있습니다.
환경 변수
ANSIBLE_HOST_KEY_CHECKING 환경 변수를 False로 설정하여 전역적으로 호스트 키 확인을 비활성화할 수 있습니다.
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook my_playbook.yml
Ansible 구성 파일
Ansible 구성 파일 (/etc/ansible/ansible.cfg 또는 ~/.ansible.cfg) 에서 host_key_checking 옵션을 설정하여 호스트 키 확인을 비활성화할 수도 있습니다.
[defaults]
host_key_checking = False
Ansible 명령줄 옵션
또는 특정 Ansible 명령에 대해 --ask-vault-pass 또는 -k 옵션을 사용하여 호스트 키 확인을 비활성화할 수 있습니다.
ansible-playbook my_playbook.yml --ask-vault-pass -k
이렇게 하면 보안 저장소 암호를 입력하라는 메시지가 표시되고 현재 명령에 대해 호스트 키 확인이 비활성화됩니다.
graph LR
A[Ansible] -- 환경 변수 설정 --> B[ANSIBLE_HOST_KEY_CHECKING=False]
A -- 구성 파일 설정 --> C[ansible.cfg]
A -- 명령줄 옵션 사용 --> D[--ask-vault-pass/-k]
호스트 키 확인을 비활성화하면 연결 프로세스를 간소화하고 동적 또는 일시적인 호스트와 작업하기 쉽게 만들 수 있습니다. 그러나 이렇게 하면 중간자 공격의 위험도 증가하므로 비생산 환경 또는 원격 호스트를 신뢰할 수 있다고 확신할 때만 호스트 키 확인을 비활성화하는 것이 좋습니다.
호스트 키 확인 구성
호스트 키 확인을 활성화된 상태로 유지하려면 필요에 따라 구성할 수 있습니다. 몇 가지 옵션은 다음과 같습니다.
수동으로 호스트 키 승인
처음 원격 호스트에 연결할 때 Ansible 은 호스트의 공개 키를 승인하라는 메시지를 표시합니다. 메시지에 "yes"를 입력하여 수동으로 키를 승인할 수 있습니다.
호스트 'example.com (192.168.1.100)'의 인증을 확인할 수 없습니다.
ECDSA 키 지문은 SHA256:abcd1234efgh5678입니다.
연결을 계속할 확실합니까 (예/아니오)? yes
이렇게 하면 호스트의 공개 키가 known_hosts 파일에 추가되고 Ansible 은 이후 연결에서 호스트의 신원을 확인하는 데 사용합니다.
자동으로 호스트 키 승인
또는 Ansible 구성 파일에서 host_key_auto_add 옵션을 설정하여 호스트 키를 자동으로 승인하도록 구성할 수 있습니다.
[defaults]
host_key_auto_add = True
이렇게 하면 사용자에게 묻지 않고 새 호스트 키가 known_hosts 파일에 자동으로 추가됩니다.
사용자 지정 known_hosts 파일 지정
기본적으로 Ansible 은 ~/.ssh/known_hosts 파일을 사용하여 호스트 키를 저장합니다. 그러나 ANSIBLE_SSH_ARGS 환경 변수를 설정하여 사용자 지정 known_hosts 파일을 지정할 수 있습니다.
export ANSIBLE_SSH_ARGS="-o UserKnownHostsFile=/path/to/custom/known_hosts"
ansible-playbook my_playbook.yml
다른 환경 또는 프로젝트에 대해 별도의 known_hosts 파일을 유지 관리하려는 경우 유용합니다.
graph LR
A[Ansible] -- 수동 승인 요청 --> B[known_hosts 파일]
A -- 자동 승인 --> C[known_hosts 파일]
A -- 사용자 지정 파일 지정 --> D[/path/to/custom/known_hosts]
호스트 키 확인을 구성하면 보안과 편의성 사이의 균형을 맞출 수 있으며, Ansible 연결의 보안을 유지하면서도 효율적인 작업 흐름을 가능하게 합니다.
요약
Ansible 에서 호스트 키 확인을 비활성화하면 자동화 워크플로를 간소화하고 마찰을 줄이며 인프라 관리의 전반적인 효율성을 높일 수 있습니다. 이 자습서에서는 호스트 키 확인의 이해, 비활성화 단계 및 사용 가능한 구성 옵션을 다루며, 이를 통해 이 기술을 자신 있게 구현하고 Ansible 기반 자동화 기능을 향상시킬 수 있습니다.


