클라우드

[SSH] SSH Agent와 Agent Forwarding로 Bastion 쉽게 접속하기

밥빵 2024. 1. 30. 02:58

SSH Agent와 Agent Forwarding로 Bastion 쉽게 접속하기


관련 포스팅

2024.01.28 - [클라우드/AWS] - [카카오 클라우드] Bastion Instance 생성하기

2024.02.01 - [클라우드] - Bastion Instance SSH 포트 변경 하기


 

 

 

일반적인 Bastion을 통한 Private Subnet 접근 방식은 두가지가 있습니다.

  •  Bastion Host에 사용자 Local PC의 개인키를 복사하는 것
  •  Bastion Host에서 SSH agent forwarding 을 사용하는 것

 

 

 

Bastion Host에 사용자 Local PC의 개인키를 복사하는 것

1. Bastion, Private Subnet 인스턴스 키 파일 위치로 간 후 Bastion에 키 파일을 복사

scp -i "Bastion-key.pem" "Private-Subnet-Instance-key.pem" ubuntu@3.219.218.76:~/

 

 

2. Bastion host 접속

ssh -i "Bastion-key.pem" root@1.1.1.1

 

 

3. Bastion host안에 들어와서 원격서버 접속

ssh -i "Private-Subnet-Instance-key.pem" ubuntu@2.2.2.2

 

 

 

 

위의 접속 방법은 두 개의 문제점이 있습니다.

보안

Bastian Host에 문제가 생길 경우 모든 사용자의 개인 키가 손상될 가능성

불편

Bastion 서버로 접속한 후 원격 서버로 하는 두번의 과정이 필요하기 때문에 불편

 

 

따라서 SSH Agent와 Agent Forwarding을 통해 로컬에 있는 두 개의 키로 원격서버에 바로 접속할 수 있도록 설정하겠습니다.

 


SSH Agent Forwarding

SSH agent forwarding은 Secure Shell (SSH) 프로토콜의 한 기능

사용자가 로컬 컴퓨터의 SSH 에이전트를 통해 원격 서버에 저장된 개인 키에 접근하지 않고도 다른 리모트 서버에 접속 가능

여러 계층의 네트워크를 거쳐야 하는 복잡한 네트워크 환경에서 유용

 

 

1. SSH agent에 Bastion-key.pem 키 등록

dokebi-bastion-key.pem라는 개인 키를 SSH 에이전트에 추가합니다.

키를 추가하면 -i 옵션으로 key를 지정해주지 않아도 원격 서버에 접속할 수 있습니다.

-K: 옵션은 파라미터로 주어진 키를 macOS 키체인에 저장합니다.
체인에 추가된 키는 시스템을 재시작하거나 로그아웃한 후에도 계속 사용할 수 있으므로, 매번 키를 로드할 필요가 없어 편리합니다

 

ssh-add -K "Bastion-key.pem"

 

 

2. SSH agent에 Private-Subnet-Instance-key.pem 키 등록 

ssh-add -K "Private-Subnet-Instance-key.pem"

 

 

3. 로컬에서 포트포워딩을 통해 원격서버 바로 접속

여기서는 두 단계에 걸쳐 SSH 접속을 합니다. 

1. Bastion 서버에 접속합니다.
-A: SSH 에이전트 포워딩을 활성화합니다. 로컬 SSH 키를 중간 서버를 통해 끝단의 서버로 전달할 수 있습니다. 

2.Bastion 서버에서 원격 서버로 접속합니다.
-J: 점프 호스트를 지정합니다. 점프 호스트는 중간에 위치한 서버로, 최종 목적지에 접속하기 위한 중계 역할을 합니다.

 

ssh -A -J ubuntu@"Bastion IP주소" ubuntu@"Private-Subnet IP주소"