나 같은 경우는 웹콘솔에서 인/아웃바운드 정책 다 짤 수 있는데
굳이 인스턴스 안에서 방화벽을 활성화 시켜가지고 이 사단이 났다.
즉 보안 정책에서 22번 포트로 들어오는 요청을 허용했지만,
인스턴스 내부 방화벽 (ufw) 에서 ssh 연결을 거부하고 있었기 때문에 SSH 연결이 막히게 되었다.
내가 직접 데이터 센터 가서 방화벽 설정을 풀 수도 없고,
인스턴스를 없앴다가 다시 만들어야 했나? 생각도 했다.
다행히도 아직 개발 진행 중인 서비스가 올라가 있어서 그래도 상관은 없었지만
또 다시 설정하기가 너무 싫어서 방법을 찾아 봤는데 아마존에서 역시 이런 상황에 대비해 방법을
마련해두었다.
콘솔에서 해당 인스턴스를 선택하고 "인스턴스 상태" 에서 "인스턴스 중지"를 누른다.
바로 옆의 "작업" > "인스턴스 설정" > "사용자 데이터 편집" 을 누른다.
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type:
text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
iptables -P INPUT ACCEPT
iptables -F
systemctl restart sshd.service || service sshd restart
if [[ $( cat /etc/hosts.[ad]* | grep -vE '^#' | awk 'NF' | wc -l) -ne 0 ]];\
then sudo sed -i '1i sshd2 sshd : ALL: allow' /etc/hosts.allow; fi
--//
이 설정은 인스턴스를 시작할 때 인스턴스에 설정된 모든 방화벽 정책을 초기화시킨다. 즉 설정을 완료하고 나면 다시 인스턴스를 중지하고 추가했던 내용들을 삭제해야한다.
sudo ufw allow 22
등의 명령어를 이용해 22번 포트로 들어오는 접속을 허용시켜서 다시는 인스턴스에 연결하지 못하는 불상사를 예방하자.
흑 절 살리셨습니다.