원인
git 계정의 홈 디렉터리의 .ssh 폴더가 잘못된 SELinux 컨텍스트(context )를 갖고 있을 경우에 많이 발생한다
확인
.ssh 의 SELinux 레이블을 확인한다.
ls -ldZ ~/.ssh/
drwx------. git git unconfined_u:object_r:ssh_home_t:s0 /home/git//.ssh/
CODE
위와 같이 ssh_home_t context 여야 하며 다른 컨텍스트일 경우 SELinux 가 ssh 데몬이 저 폴더를 읽는 것을 차단하므로 인증된 공개키 파일(authorized_keys)을 읽지 못해서 에러가 발생한다.
SELinux 에러 로그 확인
audit2why < /var/log/audit/audit.log
type=AVC msg=audit(1412569067.614:2916): avc: denied { read } for pid=2781 comm="sshd" name="authorized_keys" dev=dm-2 ino=131169 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:initrc_tmp_t:s0 tclass=file
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
CODE
조치
맞는 SELinux 레이블을 .ssh 폴더에 부여한다.
restorecon -R /home/git/.ssh
CODE