클라우드/AWS

[AWS] EC2 key없이 접근하기 - ssh 설정 변경

인프라베어 2025. 5. 3. 01:14

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에서 계정을 생성하는 것처럼 사용할 수 있었다.

adduser로 계정 생성할 때 확인할 수 있는것들

다른 리눅스에서는 볼 수 없었던 패스워드 설정, 사용자 정보, users 그룹에 추가할건지 묻는 과정들이 존재한다.

그래서 확인해보면 useradd와 adduser로 생성했을때의 계정정보가 다르다.

위 - 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 설정을 해두면 조금 더 안전하게 쓸 수 있을 것 같다.