EC2를 처음 생성할 때 항상 키파일 설정이 필수적이다.
보안이 뛰어난것은 좋으나 단기간의 짧은 사용에는 귀찮고 키 파일이 컴퓨터에 없는경우에는 키 파일 없이 접속하고 싶은 경우가 있다.
EC2에 키 없이 접근하는 방법은 AWS Session Manager 를 이용하는 것과 서버 자체의 ssh설정을 변경하는게 있는데, 오늘은 ssh설정을 변경해서 EC2에 바로 접근할 수 있는 설정을 해 보겠다.
하지만, 해당 설정을 하기 위해서는 key파일로 먼저 접근하는게 필수적이다.
간단한 테스트를 위해 EC2를 생성하고 SSH접근을 테스트 해 보았다.
실습환경
OS: Amazon Linux 2023, RHEL 9, Ubuntu24
AWS에서 EC2를 생성할 때 OS 별로 초기계정이 다른데 초기 계정의 계정명은 다음과 같다.
- Amazon Linux: ec2-user
- RHEL9: ec2-user
- Ubuntu24: ubuntu
처음에는 해당 계정으로 key파일을 이용해서 서버에 접속한다.
초기 설정 관련 명령어
- sudo passwd
초기 서버의 root 계정의 패스워드 설정이 되어있지 않다 sudo 명령어를 통해 ssh 파일을 수정해도 되지만, root 권한으로 작업하고 싶다면 root password를 변경하는게 편리하다. - useradd 사용자ID or adduser 사용자ID
ssh 접속 테스트 또는 필요한 사용자에게 전달할 서버 계정을 생성한다. 패스워드 설정은 설정되지 않으므로 passwd 사용자ID 를 통해 설정이 가능하다.
Ubuntu의 경우 useradd를 사용하면 초기 계정에 대한 쉘 및 초기폴더가 설정되지 않는데, adduser를 통해 생성하면 계정 사용에 필요한 것들을 설정하게 하므로 Ubuntu 에서는 adduser를 사용하자 - telnet IP PORT
AWS EC2 연결중 잘 알 수 없는 부분이 보안그룹인데 VPC의 라우팅, IGW 미설정, 보안그룹 미설정에 따라 방화벽 허용자체가 안되어있을 수 있다. 로컬 PC에서 telnet을 사용하면 로컬PC에서 해당서버 IP의 PORT에 대한 네트워크 설정이 잘 되었는지 확인 할 수 있다.
ex) telnet 192.168.10.100 22
정상 연결이라면 아래와 같은 결과를 확인할 수 있다. 아래와 같은 결과가 나오지 않고 실패했다면 VPC, 보안그룹 설정에 문제가 있을 가능성이 높다.
설정방법
기본적으로 ssh설정은 /etc/ssh/sshd_config 설정을 따른다. 하지만 해당 설정을 인터넷에 검색했을때 해당 파일에서 PasswordAuthentication 설정을 yes로 바꾸고 sudoers 파일을 수정하는 경우도 있는데 그런설정까지 해야하는 경우는 보지 못했다.
또한 sshd_config 설정을 확인해보면 Include 부분이 있는데 AWS환경에서 Include 된 부분의 설정에 PasswordAuthentication 설정이 적용되어 sshd_config의 설정을 바꿔도 설정이 적용되지 않았다.
그렇다면 Amazon Linux, RHEL, Ubuntu에 따라 sshd 설정을 어떻게 변경하면 패스워드로 ssh 접속을 할 수 있는지 알아보자
Amazon Linux 2023
Amazon Linux 2023은 Import되는 sshd_config.d 폴더내에 PasswordAuthentication을 설정하는 파일이 없어 sshd_config 설정에서 변경하면 된다.
PasswordAuthentication설정을 no 에서 yes로 변경
이후, systemctl restart sshd (ssh 데몬 재기동)
- vi /etc/ssh/sshd_config
- PasswordAuthentication 설정 변경
- systemctl restart sshd
RHEL 9
레드햇의 경우 동일하게 Include가 되어 있지만 Include 되는 파일 중 50-cloud-init.conf 파일이 존재한다. 해당 파일에 PasswordAuthentication설정이 존재하기 때문에 50-cloud-init.conf 파일에서 설정을 바꿔주어야 한다.
- vi /etc/ssh/sshd_config.d/50-cloud-init.conf
- PasswordAuthentication 설정 변경
- systemctl restart sshd
Ubuntu 24
Ubuntu의 경우에는 위의 Amazon Linux와 RHEL설정과는 조금은 달랐는데 계정을 생성할때부터 차이가 있었다.
나는 보통 useradd를 사용해서 계정을 생성했는데 Ubuntu에서는 초기 사용자에 대한 쉘 설정이 하나도 적용되어있지 않았고, Ubuntu에서는 adduser를 사용해야 Amazon Linux나 RHEL에서 계정을 생성하는 것처럼 사용할 수 있었다.
다른 리눅스에서는 볼 수 없었던 패스워드 설정, 사용자 정보, users 그룹에 추가할건지 묻는 과정들이 존재한다.
그래서 확인해보면 useradd와 adduser로 생성했을때의 계정정보가 다르다.
마지막으로 다른 Linux들과의 차이는 ssh데몬 재시작시 restart sshd가 아니라 ssh를 써야한다.
- vi /etc/ssh/sshd_config.d/60-cloudimg-setting.conf
- PasswordAuthentication 설정 변경
- systemctl restart ssh
후기
- 처음에는 구글링으로 무작정 따라했다가 안되는게 너무 많았다.
- conf 파일에서는 Include를 잘 확인하자(apache나 tomcat도 마찬가지...)
- Ubuntu와 다른 Linux OS와의 차이도 알 수 있었다.
- sudoers설정 변경은 접속한 ssh계정에서 sudo를 사용하지 않을꺼라면 설정을 안해줘도 된다.(root계정 스위치하는 대신 sudo를 사용할꺼라면 sudoers 설정 필수)
- 패스워드만 사용하는 방식은 위험할 수 있으니 보안그룹, 추가로 ssh AllowUsers 설정을 해두면 조금 더 안전하게 쓸 수 있을 것 같다.
'클라우드 > AWS' 카테고리의 다른 글
[Devocean, AWS] 데보션 마지막 스터디 - AWS 네트워크 (0) | 2024.08.03 |
---|---|
[AWS] S3 + Vue CI/CD 프론트 배포하기 (3) | 2024.07.24 |
[AWS, 재해복구(DR)] AWS재해복구(DR) 아키텍처 - 2편 (1) | 2023.12.21 |
[AWS, 재해복구(DR)] AWS와 재해복구(DR) 아키텍처 - 1편 (1) | 2023.12.07 |
[AWS] AWS SAA-C03 자격증 후기 (0) | 2023.11.11 |