Centos의 생명주기가 다 되어 리눅스를 새로운 운영체제로 바꿔야 하는 분들이 요즘 많은 것 같습니다.
그중 Centos의 뒤를 잊는 Rocky Linux에 관심이 많은데요. 설치 후 예상치 못한 문제점에 첫 문제로 SSH 연결 문제인 듯 싶습니다.
다음은 SSH연결이 안되는 문제원인과 해결 방법을 정리해 보았습니다.
SSH 서비스 확인
Rocky Linux에서 SSH 서비스가 실행 중인지 확인 합니다. 다음 명령을 사용하여 SSH 서비스의 상태를 확인할 수 있습니다:
# systemctl status sshd
만약 SSH 서비스가 실행 중이 아니라면, 다음 명령으로 SSH 서비스를 시작합니다:
# systemctl start sshd
서버가 재부팅시 에도 SSH 서비스가 자동으로 시작되도록 설정되도록 설정합니다.
# systemctl enable sshd
방화벽 규칙 확인
방화벽이 SSH 연결을 차단하고 있는지 확인해야 합니다. Rocky Linux에서는 기본적으로 firewalld가 사용됩니다. 방화벽 상태를 확인하려면 다음 명령을 실행합니다.
# firewall-cmd --state
방화벽이 실행 중이면 SSH 포트(기본적으로 22번 포트)가 허용되었는지 확인하십시오. 다음 명령을 사용하여 SSH 포트가 허용되었는지 확인할 수 있습니다.
# firewall-cmd --list-all | grep ssh
SSH 포트가 차단되어 있다면, 다음 명령으로 포트를 허용하고 재실행 해줍니다.
# firewall-cmd --add-service=ssh --permanent # firewall-cmd --reload
SSH 구성 파일 확인
SSH 서버의 구성 파일을 확인하여 문제가 있는지 확인할 수 있습니다. 기본적으로 SSH 구성 파일은 /etc/ssh/sshd_config
에 위치합니다. 다음 명령을 사용하여 구성 파일을 엽니다.
# vi /etc/ssh/sshd_config
파일 내에서 #PermitRootLogin
또는 PermitRootLogin
항목이 주석 처리되어 있는지 확인하십시오. 만약 주석 처리되어 있다면, 주석 처리를 제거하고 PermitRootLogin yes
로 설정합니다. 보통 설치시 기본 root로 작업을 하기 때문에 현재처럼 루트로그인을 허용으로 바꾸지만 추후 보안을 위해서는 서브 아이디에 관리자 권한을 주어 루트로그인은 허용하지 않음으로 설정하는 것이 좋습니다. 변경 후에는 SSH 서비스를 재시작합니다.
# systemctl restart sshd
SELinux 확인
SELinux가 SSH 연결을 차단하고 있는지 확인해야 합니다. SELinux가 활성화되어 있는 경우, SSH 포트가 SELinux 정책에 허용되어야 합니다. SELinux 상태를 확인하려면 다음 명령을 실행합니다.
# sestatus
만약 “SELinux status: enabled”라고 표시되면, SELinux 정책을 수정해야 합니다.
SELinux에서 22포트를 허용하고 재실행 줍니다.
# semanage port -a -t ssh_port_t -p tcp 22 # systemctl restart sshd
공유기 설정 확인
외부 인터넷 라인이 서버에 직접 연결되는 경우보다 공유기를 거쳐 연결하는 경우가 많을 텐데요.
이런 경우에는 포트 포워드가 설정되어 있어야 합니다.
보통 공유기 접속 경로는 192.168.0.1로 접속이 되며 다음처럼 서버의 아이피를 찾아 그 아이피로 포트포워딩을 해줘야 합니다.
보통 웹서버와 관련된 포트는 21, 22, 23, 80, 443 포트가 기본적으로 사용될 것 같네요. (가끔 FTP 문제로 20포트가 사용되기도 함)
참고로 공유기의 USB 서비스를 이용하는 분들은 해당 기능의 포트와 중복되는지도 점검해 보는 것이 좋습니다.
이밖의 다른 원인이 있다면 댓글남겨 주시면 저에게도 도움이 클것 같네요.