AWS와 같은 클라우드 서비스를 이용하여 VPC를 구축할 때, 흔히 외부에서 접근이 가능한 public 서버와 외부에서 접근할 수 없도록 한 private 서버 (ex. DB서버)로 분리하고 이 private 서버는 public 서버에서만 접근이 가능하도록 inbound 규칙을 설정해 놓는다.
이때 흔히 하는 실수가 private 서버에 접근하기 위한 ssh key를 public 서버에 저장해 놓는 것이다. 이 상황을 현실세계에서 예를 들어보면, 보안을 위해 이중으로 금고를 만들어 놓았는데 열쇠로 하나의 금고를 열었더니 그 내부에 다음 금고를 열 수 있는 열쇠가 놓여있는 것이다. 정말 아이러니한 상황인 것이다...
이러한 문제를 해결할 수 있는 기술 중 하나가 바로 ssh key forwarding 이다. ssh key forwording은 쉽게 말하면 처음에 로컬에서 public 서버로 접근할 때 private 서버로 접속하기 위한 키까지, 총 2개의 키를 들고 원격 접근을 하는 것이다.
ssh key forwarding을 하는 방법은 정말 간단한데, 바로 ssh agent를 이용하는 것이다. 다음은 그 과정이다.
가장 먼저 ssh agent에 키 파일을 추가한다.
ssh-add _ssh key 파일_
키가 성공적으로 추가되었는지 확인하고 싶다면 아래의 명령어를 사용할 수 있다.
ssh-add -l
정상적으로 추가 되어있다면 이제 public 서버로 원격 접속을 시도하면 된다.
ssh -A username@ _ public 서버 IP _
이렇게 해서 public 서버에 접속 했다면 이어서 추가로 private 서버로 원격 접속을 하면 된다.
ssh username@ _ public 서버 IP _
이렇게 함으로써 private 서버에 안전하게 접근이 가능하다. 하지만 중간 서버가 공격자에 의해 장악될 경우, ssh key forwarding을 이용하여 다른 시스템에 쉽게 접근할 수 있는 문제가 발생할 수도 있기 때문에 보안 상 주의가 필요하며 신뢰성있는 네트워크와 서버 환경에서 사용하는 것이 좋다.