인프런 커뮤니티 질문&답변

SeJongDeveloper님의 프로필 이미지
SeJongDeveloper

작성한 질문수

Jenkins를 이용한 CI/CD Pipeline 구축

Ansible에서 Kubernetes 제어하기

Permission denied

작성

·

323

0

ansible이 설치된 리눅스 컨테이너에서 ssh-copy-id ksjPC@xxx.xxx.xxx.xxx 키를 복사했습니다.

ssh ksjPC@xxx.xxx.xxx.xxx 명령어를 입력하면 비밀번호를 요구하고 있습니다.

비밀번호를 입력하면 정상접속이 됩니다.

 

다른 도커 컨테이너를 위 과정을 거치는 경우 비밀번호 요구없이 정상적으로 접속이 됩니다.

 

그러므로 ansible -i ./k8s/hosts kubernetes -m ping -u ksjPC 해당 명령어를 실행하면

 

[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details

192.168.0.33 | UNREACHABLE! => {

"changed": false,

"msg": "Failed to connect to the host via ssh: ksjPC@xxx.xxx.xxx.xxx: Permission denied (publickey,password,keyboard-interactive).",

"unreachable": true

}

에러가 발생하고 있습니다.

 

어떻게 하면 ansible -i ./k8s/hosts kubernetes -m ping -u ksjPC 명령어를 성공할 수 있을까요?

답변 2

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

테스트 환경에서 Ansible이 설치 된 서버를 ansible-server, Ansible이 명령어를 전달하려고 하는 대상을 docker-server 라고 가정하고 말씀드리겠습니다.

ansible-server에서 ssh-key으로 ssh 키를 생성 후 ssh-copy-id root@docker-server 쪽으로 키를 전달하실 때는 docker-server의 암호를 확인하게 됩니다. 이후 정상적으로 ansible-server에서 생성한 Public 키가 docker-server에 전달 되면, 아래와 같이 확인 되어야 하고, 말씀하신 내용 ansible-server에서 docker-server로 SSH 접속을 시도할 때 처럼 암호 없이 접속이 되어야 합니다.

<ansible-server의 ~/.ssh/id_rsa.pub 파일의 내용>

[root@ansible-server .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZCrIp1GxlkHMJ1mL3Xc79N/HOD7syQ6j+PZ1audM07wCyqfXvY92re/K+yOznrk86mOA7XemhgEXrgOj5/w5N53xbi66Kek6uWpYixDjRyraNbzgIsGjwpP4DPAKfZnbGsSB8z3iG1FePNjTgBqg
L+gEC8V9ckZODfmZ7CP2lMYcC01JMo1kS+7ptyfEIhclPP2pPRYF4sYdHGm7Bu1phOtP4I+sFIVe+4MdCyfLZiY9mcGmW1SjtKJnM2Zp3P/AX2INSpFHVTWDEkbgb91rNWkcakNbNjg0q+n5e2FCKHyZVnyO389SVvxfb8W+WobBh+HPsduPHbNOwjC
q9ehwpdAOXobdopRQXWLVAQstlV2EQYqpGlca2igyvt4J9V8s75CDmWmb1DZe3ASt4LjPTbEpqm/iOFJGxGiNH/ekgGDc8EfR+JuzHsSJbm6cM6ihoQJH1cFIT+EsC4TZWxicWWu/N70kGkSDBiykxPKT1D5lxqeHnyjs2TZOrzfjrtJk= root@ans
ible-server

<docker-server의 ~/.ssh/authorized_keys 파일의 내용>

[root@docker-server.ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZCrIp1GxlkHMJ1mL3Xc79N/HOD7syQ6j+PZ1audM07wCyqfXvY92re/K+yOznrk86mOA7XemhgEXrgOj5/w5N53xbi66Kek6uWpYixDjRyraNbzgIsGjwpP4DPAKfZnbGsSB8z3iG1FePNjTgBqgL+gEC8V9ckZODfmZ7CP2lMYcC01JMo1kS+7ptyfEIhclPP2pPRYF4sYdHGm7Bu1phOtP4I+sFIVe+4MdCyfLZiY9mcGmW1SjtKJnM2Zp3P/AX2INSpFHVTWDEkbgb91rNWkcakNbNjg0q+n5e2FCKHyZVnyO389SVvxfb8W+WobBh+HPsduPHbNOwjCq9ehwpdAOXobdopRQXWLVAQstlV2EQYqpGlca2igyvt4J9V8s75CDmWmb1DZe3ASt4LjPTbEpqm/iOFJGxGiNH/ekgGDc8EfR+JuzHsSJbm6cM6ihoQJH1cFIT+EsC4TZWxicWWu/N70kGkSDBiykxPKT1D5lxqeHnyjs2TZOrzfjrtJk= root@ansible-server

위 예제에서 보이는 것처럼 ansible-server의 id_rsa.pub 내용이 docker-server의 authorized_keys 파일에 있어야 합니다. 만약 이부분에서 기존에 다른 정보가 잘못 저장되어 있다면, 해당 authorized_keys 파일을 삭제하시고, ansible-server에서 ssh-key 생성 작업 부터 다시 진행 해 보시기 바랍니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.
SeJongDeveloper님, 문의하신 내용에 대해 답변드리겠습니다.

SSH 접속 시 비밀번호가 요구되는 경우, 일반적으로는 공개 키(public key)가 해당 서버의 ~/.ssh/authorized_keys 파일에 올바르게 등록되지 않았을 가능성이 있습니다.

올바른 공개 키 설정 후에도 접속 시 비밀번호를 요구한다면, SSH 서버 설정(sshd_config)에서 공개 키 인증이 허용되어 있는지 확인하셔야 합니다. PasswordAuthenticationyes로 설정되어 있다면, 이를 no로 변경해 공개 키 인증만을 허용하도록 설정할 수 있습니다.

또한, 비밀번호 대신 SSH 키 기반 인증을 사용하는 경우 ssh-agent가 실행 중이어야 하며, ssh-add를 통해 해당 키가 로드되어 있어야 합니다. 이를 확인하기 위해서는 다음의 명령어를 사용할 수 있습니다:

eval $(ssh-agent -s)
ssh-add

ansible 명령 실행 중 [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details 경고 메시지가 출력되는 것은, 정의된 인벤토리 파일 내 그룹 명에 유효하지 않은 문자가 있다는 것을 의미합니다. 그룹명에 유효하지 않은 문자가 없는지 검증하고 올바르게 수정하시기 바랍니다.

마지막으로, 해당 에러 메시지를 해결하기 위해서는 SSH 설정을 포함한 각 항목을 체계적으로 확인하는 것이 중요합니다. SSH 접속이 올바르고 ssh-agent가 잘 작동하고 있으며, ansible이 실행될 때 사용하는 SSH 설정과 키가 적절한지 확인해보시기 바랍니다.

이러한 해결 방안이 도움이 되셨기를 바랍니다. 추가적으로 필요한 정보나 질문이 있다면 말씀해주시기 바랍니다.

SeJongDeveloper님의 프로필 이미지
SeJongDeveloper

작성한 질문수

질문하기