danuri
오늘의 기록
danuri
전체 방문자
오늘
어제
  • 오늘의 기록 (307)
    • java (150)
      • java (33)
      • spring (63)
      • jpa (36)
      • querydsl (7)
      • intelliJ (9)
    • kotlin (8)
    • python (24)
      • python (10)
      • data analysis (13)
      • crawling (1)
    • ddd (2)
    • chatgpt (2)
    • algorithm (33)
      • theory (9)
      • problems (23)
    • http (8)
    • git (8)
    • database (5)
    • aws (12)
    • devops (10)
      • docker (6)
      • cicd (4)
    • book (44)
      • clean code (9)
      • 도메인 주도 개발 시작하기 (10)
      • 자바 최적화 (11)
      • 마이크로서비스 패턴 (0)
      • 스프링으로 시작하는 리액티브 프로그래밍 (14)
    • tistory (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • ChatGPT
  • 자바 최적화
  • Database
  • nuribank
  • Saving Plans
  • PostgreSQL
  • 도메인 주도 설계
  • JPA
  • gitlab
  • SWAGGER
  • Spring
  • 트랜잭션
  • Java
  • S3
  • CICD
  • 마이크로서비스패턴
  • 등가속도 운동
  • mockito
  • DDD
  • Security
  • reactive
  • docker
  • connection
  • Bitmask
  • Jackson
  • POSTGIS
  • RDS
  • Kotlin
  • Thymeleaf
  • AWS

최근 댓글

최근 글

hELLO · Designed By 정상우.
danuri

오늘의 기록

[AWS] EC2, ufw enable 후 ssh 접속 불가 문제
aws

[AWS] EC2, ufw enable 후 ssh 접속 불가 문제

2022. 1. 13. 15:54

Ubuntu는 기본 방화벽으로 ufw를 사용한다. 이 때, ufw를 disable 했다가 enable 했을 때, ssh 접속이 다시 되지 않는 경우가 있다. 사실  무시하고 넘어갔겠지만 ufw를 enable 할 때, ssh 접속이 끊어질 수 있다는 메시지에 y라고 응답했을 것이다.

Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Firewall is active and enabled on system startup

 

이후 EC2를 다시 ssh로 접속해보면 타임아웃 에러가 나면서 접속할 수 없게 된다.

ssh: connect to host x.x.x.x port 22: Operation timed out

 

이에 대한 해결 방법은 다음과 같다.

1. 신규 인스턴스 생성

2. 기존 인스턴스에서 볼륨을 분리하고 신규 인스턴스에 연결

3. 신규 인스턴스에서 ufw 설정

4. 신규 인스턴스에서 볼륨을 분리하고 기존 인스턴스에 연결

5. 기존 인스턴스 ssh 접속

 

그렇게 어렵지 않으니 하나씩 살펴보자.

 

신규 인스턴스 생성

우선 기존 인스턴스와 동일한 스펙의 신규 인스턴스를 생성한다.

이 때, 인스턴스 유형이나 스토리지 용량은 상관이 없으나, 볼륨 유형은 기존 인스턴스와 동일하게 가져가자.

 

 

 

기존 인스턴스에서 볼륨을 분리하고 신규 인스턴스에 연결

먼저 기존 인스턴스를 중지한다.

EC2 -> 인스턴스 -> 인스턴스 -> 기존 인스턴스 선택 -> 인스턴스 상태 -> 인스턴스 중지

정상적으로 중지되면 인스턴스 상태가 "실행 중"에서 "중지됨"으로 변경된다.

 

 

기존 인스턴스에서 볼륨을 해제한다.

EC2 -> Elastic Block Store -> 볼륨 -> 기존 인스턴스 볼륨 선택 -> 작업 -> 볼륨 분리

정상적으로 분리되면 볼륨 상태가 "사용 중"에서 "사용 가능"으로 변경된다.

 

 

해제한 볼륨을 신규 인스턴스에 연결한다.

EC2 -> Elastic Block Store -> 볼륨 -> 기존 인스턴스 볼륨 선택 -> 작업 -> 볼륨 연결

 

 

연결시 인스턴스 항목에서 신규 인스턴스를 선택한다.

정상적으로 연결되면 볼륨 상태가 "사용 가능"에서 "사용 중"으로 변경된다.

 

 

 

이제 신규 인스턴스에 들어가면 스토리지 내역에 새로운 스토리지가 추가된 것을 볼 수 있다.

 

 

 

신규 인스턴스에서 ufw 설정

이제 ssh로 신규 인스턴스에 접속한다.

 

연결된 볼륨을 확인한다.

 $ sudo lsblk
    
 NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
 loop0     7:0    0  89M  1 loop /snap/core/7713
 loop1     7:1    0  18M  1 loop /snap/amazon-ssm-agent/1480
 xvda    202:0    0   8G  0 disk
 └─xvda1 202:1    0   8G  0 part /
 xvdf    202:80   0   8G  0 disk
 └─xvdf1 202:81   0   8G  0 part

 

새로 연결한 볼륨을 마운트한다.

 $ mkdir mnt
 $ sudo mount /dev/xvdf1 ./mnt

 

ufw 설정 파일을 수정한다.

 $ cd mnt/etc/ufw
 $ sudo vim ufw.conf

ENABLED의 값을 no로 수정하고 저장한다.

 

 

신규 인스턴스에서 볼륨을 분리하고 기존 인스턴스에 연결

이제 앞선 방법과 동일하게 신규 인스턴스에 추가했던 볼륨을 분리하고 다시 기존 인스턴스에 연결한다.

 

 

기존 인스턴스 ssh 접속

기존 인스턴스를 다시 시작하고 ssh 접속을 시도하면 정상적으로 접속할 수 있다.

 

저작자표시 (새창열림)

'aws' 카테고리의 다른 글

[AWS] S3 버킷 퍼블릭 엑세스 설정  (0) 2022.07.25
[AWS] CloudWatch logs - 로그 파일 수집  (4) 2022.01.21
[Ubuntu] Ubuntu에서 rc.local 없을 때, 생성하는 방법  (0) 2022.01.09
[EC2] 프리티어(t2.micro)에서 Jenkins 용량 초과 문제  (2) 2022.01.09
[Ubuntu] Jenkins 설치  (0) 2022.01.09
    'aws' 카테고리의 다른 글
    • [AWS] S3 버킷 퍼블릭 엑세스 설정
    • [AWS] CloudWatch logs - 로그 파일 수집
    • [Ubuntu] Ubuntu에서 rc.local 없을 때, 생성하는 방법
    • [EC2] 프리티어(t2.micro)에서 Jenkins 용량 초과 문제
    danuri
    danuri
    IT 관련 정보(컴퓨터 지식, 개발)를 꾸준히 기록하는 블로그입니다.

    티스토리툴바