본문 바로가기
Infra Structure As a Code/Ansible

Ansible 배워보기 2탄 (root 로그인이 불가 환경에서 Ansible 제어 방법)

by 강시공 2023. 10. 17.
반응형
반응형

 

안녕하세요! 시공의 폭풍(클라우드) 속으로! 강시공 입니다.😊

 

1탄 Ansible 설치에 이어서 이번 포스트는! root 로그인이 불가 환경에서 Ansible 제어 방법입니다.

공공기관이나, 보안을 중시하는 고객들은 /etc/ssh/sshd_config 파일 내용에 PermitRootLogin no 로 설정하고 사용합니다.

 

그러면, 아래와 같이 에러가 발생하는데요 Ansible 사용을 포기해야하는 걸까요? 😣이번 포스트에서 root 로그인이 불가할 때 사용할 수 있는 유용한 방법에 대해 포스트해 드리겠습니다.

 

ansible 인벤토리 체크 시 Permission denied 실패 화면 입니다.


root 로그인이 불가한 경우에 서버 내부에 분명히 sudo 권한 상승을 가지고 있는 계정이 있을 겁니다.

저희는 그 계정을 이용해서, 사용자 권한을 root 급으로 에스컬레이션 시켜줄겁니다!

 

* ansible에서는 --become 옵션으로 일반 사용자 권한을 sudo 진행시켜주는 옵션을 명령을 제공합니다.

 

 

[타겟 서버 작업 입니다.]

1. /etc/sudoers 파일에 일반 사용자 sudo 권한 허용이 되어있는지 확인해 주세요.

저 같은 경우는 kang 계정을 주었습니다.

 

* sudo 명령어의 그룹 권한을 wheel로 해주고,

wheel 그룹에 kang 추가해줘도 됩니다.

 

* sudoers 파일에 kang 유저가 sudo 진행 시 아래와 같이 패스워드를 묻지 않도록 해주세요.

 

2. ssh 서비스를 재시작해 주세요.

# systemctl restart sshd

 

[관리 서버 작업입니다.]

우선 ansible.cfg 파일에 become 관련 작업을 해주는 이유는, 

물론,  설정 안 해도 됩니다. 설정 안하면, 명령어 옵션에 -b를 계속 입력해 줘야 합니다.

매우 번거롭기 때문에, 저희는 /etc/ansible/ansible.cfg 파일에 에스컬레이션 관련 설정을 해서

명령어 옵션을 주지 않도록 할 겁니다.

 

 

 

1. 관리 서버에서 아래 명령어로 대상 서버와의 키 교환을 합니다.

# ssh-copy-id kang@서버주소

 

2. ansible.cfg 수정

'''

remote_user = kang

 

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

'''

 

3. 정상적으로 ansible 진행되는지 확인

 

 

 

 

 

 

 

 

반응형