아마존 EC2 에 FileZilla 를 통해 접속하기.

로컬에서 만든 코드를 아마존에서 제공하는 FTP 서비스를 이용해서 코드를 업로드 하고,

실제 웹에서 확인 가능한 페이지를 만드는 것이 목적입니다.

이 과정을 FileZilla 를 통한 SFTP 접속을 통해서 하고 싶어서, 한 번 진행하겠습니다.

아마존 계정 생성 이후, 관리 화면으로

웹 호스팅을 위한 사이트에서 무료 계정 생성을 통해서 관리자 계정을 생성했습니다.

모두 무료로 가능합니다!

중간에 카드 등록 및 100원 결제가 됐지만, 어차피 다시 취소가 됩니다.

성공적으로 계정이 완성됐다면, 오른쪽과 같은 매니저먼트 화면이 나타나더군요.

EC2 인스턴스 생성

콘솔 화면에서 오른쪽 하단 보면은 솔루션 구축 섹션이 있습니다.

여기 보면, 가상 머신 시작 (EC2) 라는 버튼이 있는데요.

이걸 클릭해서, 가상 머신 생성 눌러서 인스턴스 하나를 만들면 됩니다.

이때 페어키 설정이 있을 건데요, 페어키를 A 라고 한다면, A.pem 이라는 파일이 다운로드 될 겁니다. 이걸 나중에 FTP 접속할 때 챙길 테니까, 따로 특정 폴더에 잘 저장해두세요. 저는 C 드라이브 내에 SSH_keys 폴더를 만들어서 넣어두었습니다. 

그럼, 오른쪽 그림 순서대로 따라가면 간단하게 인스턴스 생성된 것을 확인 가능할 것 같습니다. 
지금까지 우리는 .pem 이라는 key 를 발급 받았으며 아마존을 통해 나의 인스턴스를 생성했습니다! 이제 중간 점검을 하겠습니다. 

Chat GPT 통한 중간 점검 및 앞으로의 진행과정입니다.

  1. PuTTYgen으로 키 변환하기

    • PuTTYgen을 실행합니다.
    • “Load” 버튼을 클릭하여 .pem 파일을 불러옵니다.
    • “Save private key” 버튼을 클릭하여 .ppk 형식의 파일로 변환하여 저장합니다.
  2. PuTTY로 EC2 인스턴스에 SSH 접속하기

    • PuTTY를 실행합니다.
    • “Session” 카테고리에서 EC2 인스턴스의 공개 IP 주소를 “Host Name” 필드에 입력합니다.
    • 왼쪽 카테고리에서 “Connection” > “SSH” > “Auth”로 이동합니다.
    • “Browse” 버튼을 클릭하여 변환한 .ppk 파일을 선택합니다.
    • “Open” 버튼을 클릭하여 EC2 인스턴스에 접속합니다.
  3. FTP 서버 설치 및 설정

    • EC2 인스턴스에 접속한 후, 적절한 명령어로 vsftpd를 설치합니다 (예: sudo apt-get install vsftpd).
    • 필요한 설정을 조정합니다 (예: 사용자 추가, 익명 업로드 허용 등).
    • FTP 서버의 포트를 열어두어야 합니다 (AWS의 Security Group에서 해당 포트를 열어야 함).
  4. FTP 클라이언트 (예: FileZilla) 설정

    • FileZilla를 실행합니다.
    • “File” 메뉴에서 “Site Manager”를 열거나, “Quickconnect” 필드를 사용합니다.
    • 호스트에 EC2 인스턴스의 공개 IP 주소를 입력하고, 로그인 타입을 “Normal”로 설정한 후, 생성한 사용자 이름과 비밀번호를 입력합니다.
    • 포트는 21을 입력합니다 (FTP의 기본 포트).
    • “Connect” 버튼을 클릭하여 EC2 인스턴스에 접속합니다.
  5. 웹 사이트 파일 업로드

    • FileZilla의 로컬 패널에서 웹 사이트 파일이 있는 디렉토리로 이동합니다.
    • 원격 패널에서는 웹 서버의 적절한 위치로 이동합니다 (예: /var/www/html).
    • 파일을 원격 패널로 드래그 앤 드롭하여 업로드합니다.
  6. 도메인 연결

    • 도메인을 구매한 서비스 제공업체의 관리 콘솔에서, 도메인의 DNS 설정에 EC2 인스턴스의 공개 IP 주소를 가리키도록 A 레코드를 설정합니다.
  7. 웹 사이트 테스트

    • 웹 브라우저에서 당신의 도메인을 입력하여 웹 사이트가 제대로 작동하는지 확인합니다.

Putty 다운로드 및 PuttyGen 실행

여기 클릭

위 링크를 통해서 Putty 다운로드가 가능합니다.

그냥 쭈욱~ 클릭하시면 됩니다.

다운로드가 완료됐다?

그럼 오른쪽 그림과 같은 위치에서 실행이 가능합니다. 

다음은 이제 PuttyGen 을 실행합니다.

실행하면 아래쪽 Action 섹션에 Load 버튼이 있는 게 보일 겁니다.

이거 누르면 파일 선택이 가능한데, 모든 파일로 변경해서 아까 .pem 저장한 위치로 가면 해당 파일을 Load 하는 것이 가능합니다.

이럼 로드가 되어 나타날 것이고, 다시 Action 섹션에서 Save Private Key 를 선택 가능합니다.

이때 이름을 지정해서 저장하면 ppk 파일로 변환된 파일이 생성 완료됩니다.

오른쪽 그림을 참고하시면 금방 하실 수 있을 겁니다.

저장된 pkk 파일까지 확인을 제대로 하셨다면 이쪽 단계는 끝입니다.

Putty 실행으로 EC2 인스턴스에 SSH 접속하기

아까 PuttyGen 을 실행했던 위치에서 이번에는 Putty 를 실행할 겁니다.

실행하면 오른쪽 그림과 같은 화면이 나타나네요.

여기서 저 Host Name 이라는 부분에 우리가 적어야 할 정보가 있습니다.

오른쪽 그림을 넘겨보시면, 처음 생성해뒀던 EC2 관리페이지를 통해서 여러 정보를 확인 가능하죠?

여기서 퍼블릭 IPv4 주소 부분을 Host Name에 입력할 겁니다!

입력했다면, 왼쪽에 있는 Connetciton 안에 있는 SSH 를 펼쳐줍시다.

SSH 카테고리를 펼쳐줬다면, 그 내부에 Auth 가 있을 텐데요.

Browse 를 눌러 우리가 아까 변환했던 ppk 파일을 지정해서 open 을 누르면 됩니다.

마지막 그림처럼 실행화면이 나타났다면

인스턴스와의 ssh 접속에 성공한 겁니다!

아마존 관리창에서 보안그룹 설정

입력창은 띄웠다만, 그냥 네트워크 에러로 툭 끊기지 않으시나요?

VPN 이 가동되고 있다면 꺼주시고..

다시 아마존 관리 페이지에서 우리는 보안 설정을 해줘야 합니다.

여기에서 설정을 해주지 않는다면, SSH 접속이 어렵거든요.

오른쪽 이미지를 보시면, 아마존 관리창에서 왼쪽 탭에 보안그룹이라는 선택지가 있는 것을 확인할 수 있습니다.

 

 

해당 탭으로 들어가면, 뭔가 보안 그룹 2개가 있을 텐데요.

우리가 처음 생성했던 인스턴트 정보 페이지로 가서, 보안그룹을 확인해줍시다.

해당 보안그룹과 이름과 같은 것을, 보안그룹 창에서 선택을 해줍시다.

 

 

보안 그룹을 선택했다면,

아래쪽으로 오른쪽 화면과 같은 섹션이 아래쪽에 나타날 거예요.

이제 여기서 인바운드 규칙 편집을 눌러 다음과 같이 진행하면 됩니다.

아래의 단계에서 7번 부터 진행한다고 생각하면 되겠네요.

  1. AWS Management Console에 로그인합니다.
  2. ‘EC2’ 대시보드로 이동합니다.
  3. ‘NETWORK & SECURITY’ 섹션에서 ‘Security Groups’을 선택합니다.
  4. 사용 중인 인스턴스에 연결된 Security Group을 찾습니다.
  5. 해당 Security Group의 세부 정보를 보기 위해 클릭합니다.
  6. ‘Inbound rules’ 탭으로 이동합니다.
  7. ‘Edit inbound rules’을 선택합니다.
  8. ‘Add Rule’을 클릭하여 새 규칙을 추가합니다.
  9. ‘Type’ 드롭다운에서 ‘SSH’를 선택합니다. ‘Port Range’는 기본적으로 22로 설정됩니다.
  10. ‘Source’에서 ‘Anywhere’를 선택하면 어느 네트워크에서든 접속할 수 있지만 보안상의 이유로 권장하지 않습니다. 가능하다면, 접속을 시도하는 IP 또는 IP 범위를 지정하는 것이 더 안전합니다.
  11. 변경사항을 저장하기 위해 ‘Save rules’을 클릭합니다.

네트워크 에러..

이럴 수가..

GPT 선생님이 알려주신대로 진행을 했건만 예상치 못한 네트워크 에러가 계속 발생하고 있습니다!

매뉴얼 링크 

위 메뉴얼 링크에 있는 정보를 확인했습니다만, 특별히 문제를 발견하지는 못했습니다.

GPT 에게 물어본 해결책은 다음과 같았습니다.

저는 아래에 나열된 해결책 중에서 1,2,3,4,6 모두 확인했고.. 5번을 시도해보겠습니다.

  1. 인바운드 규칙 확인: AWS Management Console에서 해당 EC2 인스턴스의 Security Group 설정을 확인하세요. SSH(포트 22)에 대해 인바운드 트래픽을 허용하고 있는지, 그리고 허용 범위가 어디까지인지 (예를 들어, 내 IP 또는 어디서나 접속 가능) 확인하세요.

  2. Network ACL 확인: Network Access Control List(NACL)이 EC2 인스턴스와 연결된 서브넷에 대해 설정되었다면, 해당 NACL이 인바운드 SSH 연결을 허용하는지 확인하세요.

  3. 인스턴스 상태 확인: EC2 대시보드에서 인스턴스가 실행 중인지, 그리고 시스템 상태 체크가 통과되었는지 확인하세요.

  4. 퍼블릭 IP 주소 확인: 인스턴스에 할당된 퍼블릭 IP 주소가 변하지 않았는지, 재부팅이나 다른 이유로 IP가 변경된 것은 아닌지 확인하세요.

  5. 방화벽 설정 확인: 로컬 컴퓨터의 방화벽이나 네트워크 구성이 SSH 포트(22)로의 아웃바운드 연결을 차단하고 있지는 않은지 확인하세요.

  6. 키 페어 확인: 올바른 키 페어(.ppk 파일)를 사용하고 있는지 확인하세요. 잘못된 키 페어를 사용하면 인증 문제가 아닌 연결 문제로 잘못 인식될 수 있습니다.

  7. EC2 인스턴스 로그 확인: 인스턴스 로그를 통해 부팅과 SSH 서비스 시작에 관한 정보를 확인할 수 있습니다. AWS Management Console에서 ‘Actions’ -> ‘Instance Settings’ -> ‘Get System Log’를 통해 로그를 확인할 수 있습니다.

  8. 호스트 OS 방화벽 확인: EC2 인스턴스 내부의 방화벽 설정이 SSH 접속을 차단하고 있는지 확인하세요. 예를 들어, Ubuntu에서는 ufw 명령을 통해 확인할 수 있습니다.

네트워크 에러 해결 시도

내 컴퓨터의 설정 때문에 네트워크 에러가 발생하는지 확인하기 위해서 GPT 를 다시 한 번 이용합니다.

아래와 같은 선택지를 주니, 하나하나 해보는 수밖에 없겠습니다.

  1. 방화벽 확인:

    • Windows의 경우, Windows 방화벽을 통해 특정 포트나 애플리케이션이 차단되었는지 확인할 수 있습니다.
      • 제어판 > 시스템 및 보안 > Windows 방화벽 > 고급 설정 > 인바운드 규칙/아웃바운드 규칙을 확인합니다.
      • SSH와 관련된 규칙이 차단되었는지 찾아보고, 차단되었다면 해당 규칙을 허용 상태로 변경합니다.
  2. 로컬 SSH 서버 접속 테스트:

    • 만약 내 컴퓨터에 SSH 서버가 설치되어 있다면, ssh localhost 명령을 실행하여 로컬 SSH 서버에 접속해볼 수 있습니다. 이를 통해 SSH 클라이언트 자체에 문제가 있는지 확인할 수 있습니다.
  3. 다른 네트워크에서의 테스트:

    • 가능하다면, 다른 네트워크(예: 모바일 핫스팟)를 사용하여 SSH 접속을 시도해보세요. 이렇게 하면 현재 네트워크 환경이 문제인지, 아니면 컴퓨터 자체의 문제인지 구분할 수 있습니다.
  4. Telnet을 이용한 포트 테스트:

    • telnet [인스턴스의 IP 주소] 22 명령을 실행하여 SSH 포트(22)에 접속을 시도해볼 수 있습니다. 이 명령은 SSH 프로토콜 자체를 사용하지 않지만, 해당 포트에 연결할 수 있는지 테스트할 수 있습니다.
  5. 다른 SSH 클라이언트 사용:

    • PuTTY 외의 다른 SSH 클라이언트(예: MobaXterm, Bitvise SSH Client 등)를 사용하여 접속을 시도해보세요. 이를 통해 특정 클라이언트의 문제인지 확인할 수 있습니다.

바보 같은 저의 경우, 사실 처음 인스턴스 생성할 때, Amazone Linux 를 설정하고 시작해야 했지만..

Windows 기반의 인스턴스를 생성해버려서 오류가 발생한 거였습니다.ㅠㅠ

이 경우 기존에 만들었던 인스턴스 종료하고, 새로운 거 하나 만들어서 하면 잘 됩니다. 

아, 그리고! Putty 는 0.76 버전을 이용했습니다. 0.70 버전도 0.79 버전도 저는 되지 않았습니다.

Putty SSH 접속 성공 이후

저는 0.76 버전 Putty 를 사용했습니다!

0.76 버전 링크 

이것저것 안 되신다면 꼭 0.76버전을 사용해보세요!

그럼 실행창에서 아래 순서대로 명령어를 입력해도 잘 작동할 겁니다. 

 

				
					pwd
whoami
				
			

FTP 접속을 위한 설정

지금부터가 중요합니다.

오른쪽 코드를 참고해서 차근차근 명령어를 입력합시다.

명령어 오타내면 안 됩니다!

오른쪽 코드대로 모든 것을 진행했다면 대충 완수입니다.

그 전에,  아래 코드를 통해서 비밀번호 설정이 필요합니다.

콘솔창에서는 입력한 숫자가 나타나지 않을 수 있는데,

그냥 누르시고 엔터. 한 번 더 똑같이 누르고 엔터하면 잘 생성됩니다.

 

				
					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

				
			

FileZilla 를 통한 연결

FileZilla 설치하기 

혹시 설치가 안 됐다면, 위 설치하기 텍스트를 눌러서 설치를 해주세요.

설치 이후, 실행하면 보통 오른쪽 화면과 같을 겁니다.

여기서 호스트에는 우리가 SSH 접속을 위해서도 사용했던 퍼블릭 IPv4 주소

사용자명에는 ec2-user 를.

비밀번호는 이전 단계에서 세팅했던 값을.

포트에는 22를 넣어줍니다.

이후, 위쪽 탭에 있는 

“편집” > “설정” > “SFTP” > “키 파일 추가” 를 들어가서, 우리가 처음에 변환했던 ppk 파일을 넣어준다면 완료입니다!!