CentOS 6/7에서 Server에서 RSA 공개키 설정을 해도 passwd 입력을 받을 때가 있다.
SELinux 가 활성화 되어 있는 경우 .ssh 폴더의 Type 설정이 제대로 되어 있지 않아서 발생한다.
해결 방법은 아래와 같다.
[ ssh 공개키 설정 시 확인 사항 ]
1. SELinux 비활성화
# SELinux 활성화 확인
[root@skt-ocs2th-test ~]# getenforce
Enforcing
# SELinux 비활성화
[root@skt-ocs2th-test ~]# setenforce 0
# SELinux 비활성화 확인
[root@skt-ocs2th-test ~]# getenforce
Permissive
## selinux 설정 파일 변경 enforcing -> disabled
vi /etc/sysconfig/selinux
#SELINUX=enforcing
SELINUX=disabled
2. SELinux 활성화 시 확인 사항
2-1. restorecon 명령어로 SELinux 보안 Context 복구한다. ( type이 ssh_home_t로 설정되어야 한다.)
[jenkins@skt-ocs2th-test ~]$ restorecon -R -v ~/.ssh
restorecon reset /home/jenkins/.ssh context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:ssh_home_t:s0
restorecon reset /home/jenkins/.ssh/id_rsa context unconfined_u:object_r:var_lib_t:s0->unconfined_u:object_r:ssh_home_t:s0
restorecon reset /home/jenkins/.ssh/authorized_keys context unconfined_u:object_r:var_lib_t:s0->unconfined_u:object_r:ssh_home_t:s0
restorecon reset /home/jenkins/.ssh/id_rsa.pub context unconfined_u:object_r:var_lib_t:s0->unconfined_u:object_r:ssh_home_t:s0
[jenkins@skt-ocs2th-test ~]$
[jenkins@skt-ocs2th-test ~]$ ls -Z .ssh
-rw-------. jenkins jenkins unconfined_u:object_r:ssh_home_t:s0 authorized_keys
-rw-------. jenkins jenkins unconfined_u:object_r:ssh_home_t:s0 id_rsa
-rw-r--r--. jenkins jenkins unconfined_u:object_r:ssh_home_t:s0 id_rsa.pub
2-2. restorecon 명령어를 수행해도 ssh_home_t로 복구 되지 않는 경우
- 이 경우 해당 계정의 home이 /var/lib과 같이 특수한 directory 아래에 생성되었다면 SELinux의 다른 Type 설정에 따라 ssh_home_t가 설정되지 않을 수 있다.
- 아래의 경우 jenkins 계정의 home은 /var/lib이기 때문에 .ssh 폴더의 type이 var_lib_t로 되어 있다.
[jenkins@skt-ocs2th ~]$ ls -aZ
drwx------. jenkins jenkins system_u:object_r:var_lib_t:s0 .
drwxr-xr-x. root root system_u:object_r:var_lib_t:s0 ..
-rw-------. jenkins jenkins unconfined_u:object_r:var_lib_t:s0 .bash_history
-rw-r--r--. jenkins jenkins system_u:object_r:var_lib_t:s0 .bash_logout
-rw-r--r--. jenkins jenkins system_u:object_r:var_lib_t:s0 .bash_profile
-rw-r--r--. jenkins jenkins system_u:object_r:var_lib_t:s0 .bashrc
drwx------. jenkins jenkins unconfined_u:object_r:var_lib_t:s0 .ssh
-rw-------. jenkins jenkins unconfined_u:object_r:var_lib_t:s0 .viminfo
- /etc/selinux/targeted/contexts/files/file_contexts 파일에서 해당 계정에 맞는 path를 지정해서 ssh_home_t로 바꿔준다.
/var/lib(/.*)? system_u:object_r:var_lib_t:s0
/var/lib(/.*)/.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0
- restorecon 명령어로 SELinux 보안 Context 변경한다.
[jenkins@skt-ocs2th .ssh]$ restorecon -R -v ~/.ssh
restorecon reset /var/lib/jenkins/.ssh/id_rsa context unconfined_u:object_r:var_lib_t:s0->unconfined_u:object_r:ssh_home_t:s0
restorecon reset /var/lib/jenkins/.ssh/authorized_keys context unconfined_u:object_r:var_lib_t:s0->unconfined_u:object_r:ssh_home_t:s0
restorecon reset /var/lib/jenkins/.ssh/id_rsa.pub context unconfined_u:object_r:var_lib_t:s0->unconfined_u:object_r:ssh_home_t:s0
'Linux&Unix' 카테고리의 다른 글
[Linux] CentOS 6/7 RSA 공개키로 ssh 접속 설정 (0) | 2020.05.07 |
---|---|
[Linux] CentOS 7 에서 부팅 후 네트워크 지연으로 인한 파일시스템 mount 실패 시 방법 (0) | 2020.04.13 |
[Linux] CentOS 7 에서 삼바(samba) Client 설정하기 (0) | 2020.04.13 |
[Linux] CentOS 7 에서 삼바(samba) Server 설정하기 (0) | 2020.04.10 |
[Linux] CentOS /tmp 폴더 안의 파일 삭제 막기 (1) | 2019.03.04 |