ufw를 enable할 때 분명히 얘가 이렇게 친절히 물어봤다.
Command may disrupt existing ssh connections. Proceed with operation?
나는 아무렇지도 않게 y를 눌렀고
그 이후로 서버에 접속이 되지 않았다.
ssh: connection to host {IP 주소} port 22: Connection timed out
이럴수가...
ufw를 enable 시켜서 이런 문제가 발생한 것이기 때문에 이를 해결하려면 ufw를 다시 disable 시키면 된다.
그런데 서버에 접속을 해야 disable을 하든지 말든지 할텐데 서버 접속이 안 되는데 어쩌란 말이냐!!
하지만 구글링을 해보니 다 방법이 있다.
일단 접속이 불가능해진 해당 인스턴스를 중지시킨다. (종료 아니고 중지다. 종료를 하면 인스턴스가 삭제되니 주의할 것)
번역이 참... 중지 인스턴스?
주황색 중지 버튼을 누른다.
인스턴스를 중지하면 인스턴스 상태가 '중지중'이다가
조금 기다리면 '중지됨' 상태가 된다.
왼쪽 메뉴 중 아래쪽에 Elastic Block Store(EBS)의 볼륨 메뉴에 들어간다.
방금 중지시킨 해당 인스턴스와 연결되어 있는 볼륨을 분리한다. (작업 > 볼륨 분리)
주황색 '분리' 버튼을 누른다.
성공적으로 분리되었다.
다시 인스턴스 메뉴로 들어가서 '인스턴스 시작' 버튼을 눌러 새 인스턴스를 하나 생성한다. (임시로 사용할 인스턴스이다)
나는 pem 파일 다시 받고 하면 귀찮으니까 키페어는 똑같은 키페어를 쓰고 보안그룹도 그대로 선택했다.
(우리집 IP랑 내가 자주 가는 카페 IP만 ssh 접속을 허용해놓은 보안그룹이다.)
스토리지 구성 부분이 중요한데, 볼륨 유형 (gp2, gp3 등)을 기존 인스턴스와 똑같이 지정해주어야 한다.
잠깐 쓰고 삭제할 임시 인스턴스이기 때문에 temp-server라는 이름으로 생성했다.
아직은 인스턴스 상태가 대기중이다.
조금만 기다리면 '실행중' 상태가 된다.
다시 볼륨 메뉴로 간다.
아까 기존 인스턴스에서 분리한 볼륨이 '사용 가능' 상태로 되어 있고, 이번에 인스턴스를 새로 만들면서 생긴 볼륨이 '사용중'으로 되어 있는 것을 볼 수 있다.
'사용 가능'인 기존 볼륨을 이번에 새로 만든 임시 인스턴스와 연결해준다.
기존 볼륨을 체크하고 작업 > 볼륨 연결을 클릭한다.
연결할 인스턴스로 방금 새로 만든 임시 인스턴스를 선택한다.
주황색 '볼륨 연결' 버튼을 누른다.
새로 만든 임시 인스턴스에 접속한다.
나는 키페어를 그대로 했기 때문에 기존에 있던 pem 파일을 사용하여 접속했다.
아래 명령어를 입력한다.
sudo lsblk
xvdf 아래에 xvdf1이 보인다.
새로운 디렉토리를 생성하고
xvdf1을 해당 디렉토리에 마운트시킨다.
mkdir mnt
sudo mount /dev/xvdf1 ./mnt
아래 명령어로 방금 만든 mnt 디렉토리의 /etc/ufw/ufw.conf 파일을 vi editor로 연다.
sudo vi /mnt/etc/ufw/ufw.conf
ENABLED=yes라고 되어 있는 것이 보인다.
이 부분을 no로 수정하고 저장한다.
이제 드디어 ufw를 disable 시키는 데 성공한 것이다.
이제 임시로 생성했던 인스턴스를 중지시킨다. (조금 기다리다가 새로고침을 하면 인스턴스 상태가 '중지됨'이 된다)
임시 인스턴스와 임시로 연결했던 원래 볼륨을 볼륨 분리해준다. (작업 > 볼륨 분리)
조금 더 기다리면 다시 볼륨 연결 버튼이 활성화된다.
기존 볼륨을 선택하고 작업 > 볼륨 연결 버튼을 누른다.
인스턴스는 기존에 있던 인스턴스를 선택한다.
디바이스 이름은 자동으로 채워져 있을 것이다. 그런데 이대로 볼륨을 연결하면 안 된다!! 디바이스 이름을 바꿔줘야 한다.
루트 볼륨은 /dev/sda1이라는 이름을 사용해야 한다고 한다.
/dev/sda1로 디바이스 이름을 고치고 '볼륨 연결' 버튼을 누른다.
다시 인스턴스 메뉴로 돌아와 기존 인스턴스를 시작한다. (인스턴스 상태 > 인스턴스 시작)
만약 아래와 같이
Invalid value {인스턴스 ID} for instanceId. Instance does not have a volume attatched at root (/dev/sda1)
라는 에러가 나면서 인스턴스 시작에 실패한다면 볼륨을 연결할 때 디바이스 이름을 /dev/sda1로 하지 않은 것이다.
다시 볼륨을 분리했다가 볼륨을 연결할 때 디바이스 이름을 /dev/sda1로 해서 다시 연결하면 된다.
인스턴스 상태가 '대기중'이다가 '실행중'으로 바뀌면 ssh로 접속을 시도한다. 이제 성공적으로 접속이 된다.
인스턴스 상태가 '실행중'으로 바뀌었어도 너무 바로 접속하면 이렇게 Connection refused가 뜰 수도 있는데, 잠시 기다렸다가 접속하면 된다.
마지막으로 임시로 생성했던 인스턴스를 삭제한다. (인스턴스 상태 > 인스턴스 종료)
그러고 나서 다시 ufw를 사용하고 싶다면
sudo ufw allow ssh
이렇게 먼저 ssh를 allow 해준 뒤
sudo ufw enable
ufw를 enable 시켜주면 된다.
출처
https://yvvyoon.github.io/ubuntu/ufw-enable-ssh-timeout/
https://gksdudrb922.tistory.com/202
https://zel0rd.tistory.com/192
'AWS' 카테고리의 다른 글
[AWS] AWS에 스프링부트 프로젝트 올리기 (centos, maven) (0) | 2020.08.07 |
---|---|
[AWS] AWS 서버에 서버 프로그램 돌려놨는데 외부에서 접속이 안 될 때 (리눅스 포트 여는 방법) (0) | 2020.08.07 |