ssh 를 22번이 아닌 다른 포트 사용
SSH 의 전체 보안 설정은 SSH 보안 설정 문서를 참고.
ssh 포트를 외부에 공개해야 할 경우 보안을 위해서는 22번이 아닌 다른 포트를 사용하는 것이 좋으며 서버와 클라이언트로 나눠서 설정 방법 및 사용법을 정리해 본다.
SSHD
RHEL/CentOS Linux 의 경우 /etc/ssh/sshd_config 에 Port 항목을 수정하면 된다. Port 는 여러 개 지정할 수 있다. 다음은 ssh 로 10022와 20022 포트를 사용한다.
/etc/ssh/sshd_config
## ssh 포트 ## Port 22 Port 10022 Port 20022
설정을 마쳤으면 다음 명령어로 서비스를 재구동하면 반영된다. 포트를 변경했으므로 iptables 이나 firewalld 도 잊지 말고 반영해야 한다.
systemd 사용
systemctl restart sshd
systemd 미사용
service sshd restart
SELinux 주의 사항
RHEL/CentOS 사용자는 권한이 없다고 나오는 경우 다음 SELinux 명령을 실행한다.
semanage port -a -p tcp -t ssh_port_t 10022 semanage port -a -p tcp -t ssh_port_t 20022
SSH Client
ssh client 는 실행시 -p 옵션 뒤에 원격 서버의 포트 번호를 주면 된다. 다음은 ssh 로 10022 포트로 연결하는 예제이다.
ssh -p 10022 example.com
그런데 매번 포트를 입력하기가 귀찮고 또 내부적으로 ssh 를 사용하는 git 이나 rsync 등을 사용시 포트 번호를 설정하기 번거롭거나 포트 번호 옵션을 제공하지 않는 경우가 있다.
이럴 경우 ssh 의 config 파일에 Host 별 Port 를 지정해 줄 수 있다.
~/.ssh/config
Host example.com Port 10022 PreferredAuthentications publickey IdentityFile ~/.ssh/example.com/id_rsa