하도 접속시도 (해킹시도)가 많아서 리눅스 신규 설치후에는 접속포트를 변경하는게 좋다.
ssh 기본포트인 22번을 1999로 변경해 보자.
** 방화벽이 구동중인 경우 반드시 방화벽을 먼저 처리 후 포트를 변경해야 한다. **
1. 포트 확인
# netstat -an|grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
22번 포트로 LISTEN 하는걸 알수 있다.
2. 설정파일 변경
# vi /etc/ssh/sshd_config
Port 22 주석처리 후 원하는 포트로 변경
Port 1999
3. sshd 재시작
# systemctl restart sshd.service
어라! 오류가 발생한다.
# systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.
status 로 상세정보를 보란다.
SELINUX의 경우 보안땜에 먼저 포트를 열어줘야 한다.
# semanage port -a -t ssh_port_t -p tcp 1999
4. sshd 재시작 후 포트 확인
# systemctl restart sshd.service
# netstat -n|grep LISTEN
tcp 0 0 0.0.0.0:1999 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp6 0 0 :::1999 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
5. 새로운 터미널로 xxxx 포트로 접속되면 성공!!
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 20022BASH
설정을 마쳤으면다음 명령어로 서비스를 재구동하면 반영된다. 포트를 변경했으므로 iptables 이나 firewalld 도 잊지 말고 반영해야 한다.
systemd 사용
systemctl restart sshdBASH
systemd 미사용
service sshd restartBASH
SELinux 주의 사항
RHEL/CentOS 사용자는 권한이 없다고 나오는 경우 다음 SELinux 명령을 실행한다.
semanage port -a -p tcp -t ssh_port_t 10022 semanage port -a -p tcp -t ssh_port_t 20022
CODE
SSH Client
ssh client 는 실행시 -p 옵션 뒤에 원격 서버의 포트 번호를 주면 된다. 다음은 ssh 로 10022 포트로 연결하는 예제이다.
ssh -p 10022 example.com
CODE
그런데 매번 포트를 입력하기가 귀찮고 또 내부적으로 ssh 를 사용하는 git 이나 rsync 등을 사용시 포트 번호를 설정하기 번거롭거나 포트 번호 옵션을 제공하지 않는 경우가 있다.
이럴 경우 ssh 의 config 파일에 Host 별 Port 를 지정해 줄 수 있다.
~/.ssh/config
Host example.com Port 10022 PreferredAuthentications publickey IdentityFile ~/.ssh/example.com/id_rsaBASH
같이 보기
- ssh config 설정해서 서버마다 다른 ssh key 사용하기
- git 을 ssh 로 연결시 22번 이 아닌 다른 포트 사용하기
- systemd(system daemon) 을 관리하는 systemctl 명령어 사용법