로컬에서 만든 코드를 아마존에서 제공하는 FTP 서비스를 이용해서 코드를 업로드 하고,
실제 웹에서 확인 가능한 페이지를 만드는 것이 목적입니다.
이 과정을 FileZilla 를 통한 SFTP 접속을 통해서 하고 싶어서, 한 번 진행하겠습니다.
웹 호스팅을 위한 사이트에서 무료 계정 생성을 통해서 관리자 계정을 생성했습니다.
모두 무료로 가능합니다!
중간에 카드 등록 및 100원 결제가 됐지만, 어차피 다시 취소가 됩니다.
성공적으로 계정이 완성됐다면, 오른쪽과 같은 매니저먼트 화면이 나타나더군요.
콘솔 화면에서 오른쪽 하단 보면은 솔루션 구축 섹션이 있습니다.
여기 보면, 가상 머신 시작 (EC2) 라는 버튼이 있는데요.
이걸 클릭해서, 가상 머신 생성 눌러서 인스턴스 하나를 만들면 됩니다.
이때 페어키 설정이 있을 건데요, 페어키를 A 라고 한다면, A.pem 이라는 파일이 다운로드 될 겁니다. 이걸 나중에 FTP 접속할 때 챙길 테니까, 따로 특정 폴더에 잘 저장해두세요. 저는 C 드라이브 내에 SSH_keys 폴더를 만들어서 넣어두었습니다.
그럼, 오른쪽 그림 순서대로 따라가면 간단하게 인스턴스 생성된 것을 확인 가능할 것 같습니다.
지금까지 우리는 .pem 이라는 key 를 발급 받았으며 아마존을 통해 나의 인스턴스를 생성했습니다! 이제 중간 점검을 하겠습니다.
PuTTYgen으로 키 변환하기
.pem 파일을 불러옵니다..ppk 형식의 파일로 변환하여 저장합니다.PuTTY로 EC2 인스턴스에 SSH 접속하기
.ppk 파일을 선택합니다.FTP 서버 설치 및 설정
vsftpd를 설치합니다 (예: sudo apt-get install vsftpd).FTP 클라이언트 (예: FileZilla) 설정
21을 입력합니다 (FTP의 기본 포트).웹 사이트 파일 업로드
/var/www/html).도메인 연결
웹 사이트 테스트
다음은 이제 PuttyGen 을 실행합니다.
실행하면 아래쪽 Action 섹션에 Load 버튼이 있는 게 보일 겁니다.
이거 누르면 파일 선택이 가능한데, 모든 파일로 변경해서 아까 .pem 저장한 위치로 가면 해당 파일을 Load 하는 것이 가능합니다.
이럼 로드가 되어 나타날 것이고, 다시 Action 섹션에서 Save Private Key 를 선택 가능합니다.
이때 이름을 지정해서 저장하면 ppk 파일로 변환된 파일이 생성 완료됩니다.
오른쪽 그림을 참고하시면 금방 하실 수 있을 겁니다.
저장된 pkk 파일까지 확인을 제대로 하셨다면 이쪽 단계는 끝입니다.


아까 PuttyGen 을 실행했던 위치에서 이번에는 Putty 를 실행할 겁니다.
실행하면 오른쪽 그림과 같은 화면이 나타나네요.
여기서 저 Host Name 이라는 부분에 우리가 적어야 할 정보가 있습니다.
오른쪽 그림을 넘겨보시면, 처음 생성해뒀던 EC2 관리페이지를 통해서 여러 정보를 확인 가능하죠?
여기서 퍼블릭 IPv4 주소 부분을 Host Name에 입력할 겁니다!
입력했다면, 왼쪽에 있는 Connetciton 안에 있는 SSH 를 펼쳐줍시다.
SSH 카테고리를 펼쳐줬다면, 그 내부에 Auth 가 있을 텐데요.
Browse 를 눌러 우리가 아까 변환했던 ppk 파일을 지정해서 open 을 누르면 됩니다.
마지막 그림처럼 실행화면이 나타났다면
인스턴스와의 ssh 접속에 성공한 겁니다!




입력창은 띄웠다만, 그냥 네트워크 에러로 툭 끊기지 않으시나요?
VPN 이 가동되고 있다면 꺼주시고..
다시 아마존 관리 페이지에서 우리는 보안 설정을 해줘야 합니다.
여기에서 설정을 해주지 않는다면, SSH 접속이 어렵거든요.
오른쪽 이미지를 보시면, 아마존 관리창에서 왼쪽 탭에 보안그룹이라는 선택지가 있는 것을 확인할 수 있습니다.
해당 탭으로 들어가면, 뭔가 보안 그룹 2개가 있을 텐데요.
우리가 처음 생성했던 인스턴트 정보 페이지로 가서, 보안그룹을 확인해줍시다.
해당 보안그룹과 이름과 같은 것을, 보안그룹 창에서 선택을 해줍시다.
보안 그룹을 선택했다면,
아래쪽으로 오른쪽 화면과 같은 섹션이 아래쪽에 나타날 거예요.
이제 여기서 인바운드 규칙 편집을 눌러 다음과 같이 진행하면 됩니다.
아래의 단계에서 7번 부터 진행한다고 생각하면 되겠네요.


이럴 수가..
GPT 선생님이 알려주신대로 진행을 했건만 예상치 못한 네트워크 에러가 계속 발생하고 있습니다!
위 메뉴얼 링크에 있는 정보를 확인했습니다만, 특별히 문제를 발견하지는 못했습니다.
GPT 에게 물어본 해결책은 다음과 같았습니다.
저는 아래에 나열된 해결책 중에서 1,2,3,4,6 모두 확인했고.. 5번을 시도해보겠습니다.
인바운드 규칙 확인: AWS Management Console에서 해당 EC2 인스턴스의 Security Group 설정을 확인하세요. SSH(포트 22)에 대해 인바운드 트래픽을 허용하고 있는지, 그리고 허용 범위가 어디까지인지 (예를 들어, 내 IP 또는 어디서나 접속 가능) 확인하세요.
Network ACL 확인: Network Access Control List(NACL)이 EC2 인스턴스와 연결된 서브넷에 대해 설정되었다면, 해당 NACL이 인바운드 SSH 연결을 허용하는지 확인하세요.
인스턴스 상태 확인: EC2 대시보드에서 인스턴스가 실행 중인지, 그리고 시스템 상태 체크가 통과되었는지 확인하세요.
퍼블릭 IP 주소 확인: 인스턴스에 할당된 퍼블릭 IP 주소가 변하지 않았는지, 재부팅이나 다른 이유로 IP가 변경된 것은 아닌지 확인하세요.
방화벽 설정 확인: 로컬 컴퓨터의 방화벽이나 네트워크 구성이 SSH 포트(22)로의 아웃바운드 연결을 차단하고 있지는 않은지 확인하세요.
키 페어 확인: 올바른 키 페어(.ppk 파일)를 사용하고 있는지 확인하세요. 잘못된 키 페어를 사용하면 인증 문제가 아닌 연결 문제로 잘못 인식될 수 있습니다.
EC2 인스턴스 로그 확인: 인스턴스 로그를 통해 부팅과 SSH 서비스 시작에 관한 정보를 확인할 수 있습니다. AWS Management Console에서 ‘Actions’ -> ‘Instance Settings’ -> ‘Get System Log’를 통해 로그를 확인할 수 있습니다.
호스트 OS 방화벽 확인: EC2 인스턴스 내부의 방화벽 설정이 SSH 접속을 차단하고 있는지 확인하세요. 예를 들어, Ubuntu에서는 ufw 명령을 통해 확인할 수 있습니다.
내 컴퓨터의 설정 때문에 네트워크 에러가 발생하는지 확인하기 위해서 GPT 를 다시 한 번 이용합니다.
아래와 같은 선택지를 주니, 하나하나 해보는 수밖에 없겠습니다.
방화벽 확인:
로컬 SSH 서버 접속 테스트:
ssh localhost 명령을 실행하여 로컬 SSH 서버에 접속해볼 수 있습니다. 이를 통해 SSH 클라이언트 자체에 문제가 있는지 확인할 수 있습니다.다른 네트워크에서의 테스트:
Telnet을 이용한 포트 테스트:
telnet [인스턴스의 IP 주소] 22 명령을 실행하여 SSH 포트(22)에 접속을 시도해볼 수 있습니다. 이 명령은 SSH 프로토콜 자체를 사용하지 않지만, 해당 포트에 연결할 수 있는지 테스트할 수 있습니다.다른 SSH 클라이언트 사용:
바보 같은 저의 경우, 사실 처음 인스턴스 생성할 때, Amazone Linux 를 설정하고 시작해야 했지만..
Windows 기반의 인스턴스를 생성해버려서 오류가 발생한 거였습니다.ㅠㅠ
이 경우 기존에 만들었던 인스턴스 종료하고, 새로운 거 하나 만들어서 하면 잘 됩니다.
아, 그리고! Putty 는 0.76 버전을 이용했습니다. 0.70 버전도 0.79 버전도 저는 되지 않았습니다.
저는 0.76 버전 Putty 를 사용했습니다!
이것저것 안 되신다면 꼭 0.76버전을 사용해보세요!
그럼 실행창에서 아래 순서대로 명령어를 입력해도 잘 작동할 겁니다.
pwd
whoami
지금부터가 중요합니다.
오른쪽 코드를 참고해서 차근차근 명령어를 입력합시다.
명령어 오타내면 안 됩니다!
오른쪽 코드대로 모든 것을 진행했다면 대충 완수입니다.
그 전에, 아래 코드를 통해서 비밀번호 설정이 필요합니다.
콘솔창에서는 입력한 숫자가 나타나지 않을 수 있는데,
그냥 누르시고 엔터. 한 번 더 똑같이 누르고 엔터하면 잘 생성됩니다.
sudo passwd ec2-user
# 내 인스턴스에 FTP 서버를 설치하는 코드입니다.
sudo yum insall vsftp -v
# FTP 의 각종 설정을 볼 수 있는 코드입니다.
sudo nano /etc/vsftpd/vsftpd.conf
# nano 에디터 내에서는 Ctrl + W를 눌러 원하는 설정을 찾을 수 있습니다.
# 설정을 찾은 후 원하는 값으로 변경하거나 추가하세요.
# 변경이 완료되면 Ctrl + O를 눌러 저장하고 Ctrl + X를 눌러 에디터를 종료하세요.
# 설정 확인 및 변경 이후 다음의 코드를 통해서 vsftp 서비스를 재시작합니다.
sudo systemctl restart vsftpd
혹시 설치가 안 됐다면, 위 설치하기 텍스트를 눌러서 설치를 해주세요.
설치 이후, 실행하면 보통 오른쪽 화면과 같을 겁니다.
여기서 호스트에는 우리가 SSH 접속을 위해서도 사용했던 퍼블릭 IPv4 주소를
사용자명에는 ec2-user 를.
비밀번호는 이전 단계에서 세팅했던 값을.
포트에는 22를 넣어줍니다.
이후, 위쪽 탭에 있는
“편집” > “설정” > “SFTP” > “키 파일 추가” 를 들어가서, 우리가 처음에 변환했던 ppk 파일을 넣어준다면 완료입니다!!

