gitlab 에 ssh 로 연결시 permission denied 에러 발생
원인
git 계정의 홈 디렉터리의 .ssh 폴더가 잘못된 SELinux 컨텍스트(context )를 갖고 있을 경우에 많이 발생한다
확인
.ssh 의 SELinux 레이블을 확인한다.
ls -ldZ ~/.ssh/ drwx------. git git unconfined_u:object_r:ssh_home_t:s0 /home/git//.ssh/
위와 같이 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.
조치
맞는 SELinux 레이블을 .ssh 폴더에 부여한다.
restorecon -R /home/git/.ssh