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 


같이 보기