1. IP 확인

IP를 포트포워딩하여 ssh로 접근하기 위해 생성된 서버의 IP를 확인할 필요가 있다.

하지만, 초기에 ifconfig 명령을 하면 command not found 가 발생한다.

net-tools 를 설치하여 이를 활성화시킨다.

dnf install net-tools -y

2. SSH 접근

2-1. 기본 포트 접근

SSH로 접근하려면 기본 포트인 22번 포트로 포트포워딩하여 사용할 수 있다.

image.png

나는 ipTIME을 사용하기 때문에 포트포워딩을 위와 같이 설정하여 ssh 접근이 가능하다.

ssh root@192.168.0.42 -p 22

2-2. 포트 번호 변경

기본값이기 때문에 바로 쉽게 접근할 수 있지만 반대로, 너무 적나라하게 노출하는 꼴이 되므로 이를 변경하는 것이 좋다.

1. ssh 설정 정보 접근

vi /etc/ssh/sshd_config

2. 포트 수정

image.png

“#”을 제거한 뒤, 22번 포트로 되어있는 구분을 원하는 포트로 수정한다.

3. SELinux 활성화

ssh 포트 하나 변경했는데, 왜 갑자기 SELinux라는게 나오는가?

먼저, SELinux는 공격자가 강제로 서버 정보를 변경하지 못하게 서버를 보호하는 정책이다.

기본적으로 해당 정책이 활성화 되어있기 때문에, 포트를 변경하고 적용하기 위해 서버를 재시작하려 하면 에러가 출력된다.

image.png

이제 내가 변경할 포트를 정책에 추가해보자.

패키지 설치

내가 설치한 Rocky Linux 9.2는 “minimal” 버전이기 때문에 추가적으로 패키지를 설치해야한다.

dnf install -y policycoreutils-python-utils

해당 패키지에는 서버에 semanage 명령을 사용할 수 있게 한다.

semanage는 SELinux의 보안 정책을 제어할 수 있는 유틸리티이다.

포트 정책 추가

semanage port -a -t ssh_port_t -p tcp 883

정책 조회

semanage port -l | grep 883

image.png

4. 서비스 재시작

정책을 추가했으니 ssh 서비스를 재시작하여 반영하도록 한다.

systemctl restart sshd.service

3. 방화벽 허용

ssh 포트 변경을 해도 접근을 했을 때, Connection refused 가 발생할 수 있다.

sshd는 잘 동작한다고 해도, 방화벽에서 아직 해당 포트를 허용해주지 않았기에 이와 같은 출력을 뱉는다.

rocky OS에서는 방화벽 설정을 firewall-cmd 로 제어할 수 있다.

방화벽 전체 리스트 조회

firewall-cmd --list-all

방화벽 정책 추가

firewall-cmd --permanent --add-port=883/tcp
# permanent 옵션은 영구적으로 적용한다 (리부트해도 반영됨)

방화벽 정책 반영 (리로드)

firewall-cmd --reload

4. 서버 계정 설정

원격 root 계정으로 접속했을 때 permission denied 가 발생할 수 있다.

그 이유는, root 계정은 원격으로 접근하는 것이 기본적으로 허용 되어있지 않기 때문이다.

그럼 이에 대한 해결책으로는 root 계정을 외부에서 접근할 수 있게 하거나, 새로운 계정을 생성하면 된다.

4-1. root 외부 접근 허용

image.png

/etc/ssh/sshd_configpermitRootLogin 설정을 수정한다.

해당 옵션은 root 계정이 ssh에 접근하는 방식에 대한 설정이다.

  • prohibit-password: key 파일을 통한 로그인 허용
  • yes: 비밀번호를 통한 로그인 허용
  • no: 로그인 불가능

위에 옵션에 따라서, yes로 수정하여 저장하고 서비스를 재시작한다. (systemctl restart sshd)

4-2. 신규 계정 생성

1. 신규 계정 생성

# adduser {계정명}
adduser admin

2. 계정 패스워드 수정

# passwd {계정명}
passwd admin

3. sudo 권한 부여

일반 계정으로 접근하여 root로 전환하여 사용해도 되지만, sudo로 권한을 제어할 수도 있다.

vi /etc/sudoers 에 접근하여 계정을 추가하면 된다.

image.png

위와 같은 주석을 찾아서 내가 생성한 계정을 추가한다.

image.png

readonly 파일이라 수정 저장이 안될 수 있으나, sudoers 파일에 쓰기 권한을 주거나 :wq! 로 저장하면 된다.


이렇게 SSH 설정하면, (맥 기준으로) iterms나 terminal 접근으로 편하게 사용할 수 있습니다. 👍