AWS

[AWS] Bastion Host를 통해 내부서버에 접속하는 방법

KAispread 2023. 9. 30. 16:39
728x90
반응형
 

[AWS] Bastion Host 이해 및 구축

Bastion Host 란? Bastion이라는 단어의 뜻은 중세시대에 성 외각을 보호하기 위해 돌출된 부분을 의미합니다. Bastion Host도 이와 같습니다. 사용자에게 제공되는 컴퓨팅 리소스를 보호하기위한 Host로,

rachel0115.tistory.com

앞선 포스팅에서 Bastion Host를 구축해보았습니다. 해당 포스팅에서는 Bastion Host를 통해서 사설 IP 대역에 ping을 날리는 것으로 연결을 확인하였는데요.

이번에는 Bastion host를 통해 사설 IP 대역에 있는 내부 서버에 접속하는 방법에 대해 알아보겠습니다.

 

먼저, 내부 서버가 ssh 22번 포트에 대해
모든 VPC IP 혹은 Public Subnet IP 대상으로 열려있는지 꼭! 확인해주세요.

 

📌 방법 1

SSH키를 Bastion Host에 옮겨서 내부 서버에 접속

첫 번째 방법은 내부 서버의 SSH키를 Bastion에 옮기는 방법입니다. 
[ Bastion Host에 접속 -> Bastion에서 내부서버 SSH키를 사용하여 내부서버 접속 ]

할당된 SSH 키는 다음과 같습니다.

  • Bastion = test-bastion-keypair.pem
  • 내부서버 = test-server-keypair.pem

 

먼저, 내부서버 pem키를 Bastion에 옮겨주겠습니다. pem키는 텍스트 파일로 이루어져있기 때문에 이를 복사하기 위해 cat 명령을 사용합니다.

cat test-server-keypair.pem

pem키는 다음과 같이, BEGIN RSA PRIVATE KEY ~ END RSA PRIVATE KEY 로 끝나는 텍스트형태입니다. 이 텍스트를 전부 복사합니다. (맨 마지막에 '%' 문자는 빼주세요 텍스트가 '-' 로 끝나야합니다.)

 

# Bastion Host 접속
ssh -i test-bastion-keypair.pem ubuntu@'Bastion 퍼블릭 IP'

# vim으로 텍스트 에디터를 열고, 앞서 복사한 pem키 텍스트 붙여넣기
vim server-key.pem

# pem키 권한 변경
chmod 400 server-key.pem

 

vim 명령을 통해 텍스트 에디터를 열고, 앞서 복사했던 pem키를 복사해줍니다. 이후 chmod 로 ReadOnly로 권한을 수정해줍니다.

 

ssh -i server-key.pem ec2-user@'접속할 내부서버 프라이빗 IP'

ssh 명령으로 내부서버 접속을 시도해보면?

다음과 같이 내부 서버에 접속할 수 있습니다.

하지만 이와 같은 방법은 내부서버의 키를 공인 IP 대역에 있는 리소스에 저장해놓는 것이기 때문에 보안상 좋지 않은 방법입니다. 2번째 방법을 통해 내부서버에 접속하는 것을 권장합니다.

 

📌 방법 2

내부서버 프록시 옵션을 이용한 SSH 접속

앞선 방법처럼 키를 옮기는 방법은 보안상 좋지 않습니다. 지금부터 설명할 ssh config 파일을 통해, 내부서버 프록시 옵션으로 접속하는 방법을 사용하면 키를 옮기지 않아도 접속할 수 있기때문에 보안상 더 안전합니다.

 

우선 .ssh 디렉터리로 이동합니다.

cd ~/.ssh

# .ssh 디렉터리가 없다면 생성
mkdir ~/.ssh
chmod 700 ~/.ssh
cd ~/.ssh

# .ssh 디렉터리에 config 파일 생성
vim config

 

config 파일은 다음과 같이 작성합니다. (~/.ssh/config)

// Bastion Host 접속 
Host test-bastion         // (1)
	HostName 43.200.2.183 // (2)
	User ubuntu           // (3) 
	IdentityFile ~/dev/study/test-bastion-keypair.pem // (4)

// 내부서버 접속
Host test-server-01
	HostName 10.0.130.17  // 내부서버 프라이빗 IP
	User ec2-user
	IdentityFile ~/dev/study/test-server-keypair.pem
	Proxycommand ssh test-bastion -W %h:%p  // (5)
  • (1) Host : 이름 지정 [자유]
  • (2) HostName: ssh로 접속하고자 하는 IP
    • Bastion Host는 Public IP
    • 내부 서버는 Private IP
  • (3) User : ssh로 접속하고자하는 유저 지정
    • AMI 기본 유저 ec2-user
    • Ubuntu 기본 유저 ubuntu
  • (4) IdentityFile : ssh 접속할 때 사용할 pem키 경로 지정
  • (5) Proxycommand : 내부서버에 접속하기 한 Bastion IP:Port를 지정

 

접속

  • Host 에 입력한 이름으로 접속합니다.
# 내부서버 접속
ssh test-server-01

 

다음과 같이 한 번의 명령어만으로 내부서버에 접속할 수 있습니다.

Bastion도 마찬가지로 ssh test-bastion 명령을 통해 바로 접속할 수 있습니다.

만약 접속이 안된다면, sudo chmod 644 config 로 config파일의 권한을 수정해주세요

 

 

728x90
반응형