리눅스 서버에서 ssh로 접근할때 root로 접근을 제한하려면?

리눅스 서버에서 ssh로 접근할때 root로 접근을 제한하려면?
Photo by Kevin Horvat / Unsplash

비밀번호를 변경

root 계정의 비밀번호를 복잡한 비밀번호로 변경한다. 이렇게 하면 무차별 대입 공격에 대해 안전해집니다. passwd 명령어를 사용하여 비밀번호를 변경할 수 있다.

$ sudo passwd root

root 로그인 비활성화

root 계정으로 직접 로그인하는 것을 비활성화한다. 대신 sudo 권한을 이용하여 명령어를 실행한다. 이렇게 하면 일반 사용자 계정으로 로그인한 후 sudo를 사용하여 필요한 작업을 수행해야 한다.

$ sudo vi /etc/ssh/sshd_config

위 명령어로 sshd_config 파일을 열어 다음과 같은 설정을 추가한다.

PermitRootLogin no

이제 root계정으로 ssh로그인이 불가능해진다.

SSH 키를 사용한 인증

SSH 키를 사용하여 root 계정으로의 로그인을 차단한다. 이렇게 하면 인증된 사용자만 SSH로 서버에 접근할 수 있다.

$ sudo vi /etc/ssh/sshd_config

위 명령어로 sshd_config 파일을 열어 다음과 같은 설정을 추가한다.

PasswordAuthentication no

이제 비밀번호 인증을 차단하고 SSH 키를 사용하여 로그인합니다. 다음과 같이 명령어를 입력하여 키를 생성한다.

$ ssh-keygen

그리고 키를 원격 서버의 ~/.ssh/authorized_keys 파일에 복사한다.

$ ssh-copy-id user@remote_host

위 예시에서 user는 원격 서버에 접근할 수 있는 사용자 이름을 나타낸다. 이제 해당 사용자로 SSH로 서버에 접속할 때만 root 계정으로의 로그인이 가능하다.

이러한 방법들을 사용하여 root로의 직접적인 접근을 막을 수 있다.