[linux] ssh 포트 변경하기 (SELinux에서 Bind Permission denied 뜰 때)

급하게 리눅스(CentOS 7)에서 ssh 포트를 변경할일이 있는데..
예전에 올린글이 있어서 그걸 참고해서 하는데 안되는 부분이 있어서 추가한다.

기본적인건 예전에 올린글 대로 하면 된다.

[linux] ssh 포트 변경하기(추가하기)

다만.. 윗글의 3번 sshd를 재시작 할때..

Jul 26 10:01:07 localhost sshd[1590]: error: Bind to port 1922 on 0.0.0.0 failed: Permission denied.
Jul 26 10:01:07 localhost sshd[1590]: error: Bind to port 1922 on :: failed: Permission denied.
Jul 26 10:01:07 localhost sshd[1590]: fatal: Cannot bind any address.

라면서 안되는 경우가 있는데.. 이 경우 해결책이다.

방법1.

간단한 방법은 보안을 잠간 내린다음 ssh를 실행하고, 다시 보안을 올리는 경우다.
다만 이럴 경우 다음번에 sshd를 restart하면 또 에러난다. (비추. 급할때 써볼 정도)

[root@localhost ~]# setenforece 0         # 보안 내림
[root@localhost ~]# getenforece           #지금 상태 확인
[root@localhost ~]# systemctl restart sshd.service
[root@localhost ~]# systemctl status sshd.service   # 오류가 없는지 확인
[root@localhost ~]# setenforece 1                   # 다시 보안 올림

방법 2.

semanage 명령을 통해 새로운 포트를 등록한다.

[root@localhost ~]# yum install policycoreutils-python       # semanage가 없을 경우 설치
[root@localhost ~]# semanage port -l | grep ssh          # 현재 상태 확인
ssh_port_t                     tcp      22               # ssh 22번 포트 확인
[root@localhost ~]# semanage port -a -t  ssh_port_t -p tcp 1922       # tcp 1922 포트를 ssh_port_t 에 추가
[root@localhost ~]# semanage port -l | grep ssh
ssh_port_t                     tcp      1922, 22         # 1922 추가 확인

추가로..

방화벽에 정책에 추가해줘야할 수도 있다.

[root@localhost ~]# firewall-cmd --zone=public --add-port=1922/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
[root@localhost ~]# firewall-cmd --info-zone=public   # 추가됐는지 확인

Loading