ProxyJump의 기능과 사용법
ProxyJump는 SSH 클라이언트에서 중간 서버(즉, 점프 호스트 또는 게이트웨이)를 통해 목표 서버에 연결할 수 있도록 해주는 설정 옵션입니다. 이는 단순한 네트워크 라우팅을 제공하며, 외부에서 직접 접근이 불가능한 내부 시스템에 안전하게 접속하는 데 유용합니다.
1. ProxyJump: 간편한 다중 라우팅 설정
ProxyJump는 특정 중개 서버를 거쳐 최종 대상에 연결되도록 하는 현대적인 방식입니다. 이를 통해 복잡한 명령어 입력 없이도 원격 내부 시스템에 접근 가능합니다.
예시 구성 (SSH 설정 파일 ~/.ssh/config):
Host target-host
HostName internal.host.local
User devuser
ProxyJump jump-server
이 설정에서는 ssh target-host 명령을 실행하면 자동으로 jump-server로 먼저 접속한 후, 그 서버를 통해 internal.host.local에 연결됩니다.
명령줄에서 직접 사용하는 방법:
ssh -J jump-server devuser@internal.host.local
이 방식은 설정 파일 없이도 빠르게 다중 라우팅을 구현할 수 있습니다. 다만, 이는 네트워크 전달만 담당하며, 로컬 인증 키를 전달하지 않습니다.
2. ProxyCommand: 더 유연한 커스터마이징 옵션
ProxyJump 이전에는 ProxyCommand를 사용해 자체 명령을 정의하여 프록시 연결을 구현했습니다. 이는 비표준 프록시(예: netcat 등)와 함께 사용 가능한 장점이 있지만, 설정이 다소 복잡합니다.
예시 구성:
Host target-host
HostName internal.host.local
User devuser
ProxyCommand ssh -W %h:%p jump-server
여기서 %h는 목적지 호스트 이름, %p는 포트 번호를 의미합니다. -W 옵션은 원격 서버에서 지정된 호스트 및 포트로 직접 흐름을 전달하도록 합니다.
ProxyCommand는 다양한 환경에서 사용 가능하지만, 대부분의 경우 ProxyJump로 충분하므로 이제는 거의 사용되지 않습니다.
ProxyJump vs SSH Agent Forwarding
- ProxyJump: 네트워크 레벨에서 연결을 중계. 목적지 서버에 대한 접근을 위해 중개 서버를 이용.
- SSH Agent Forwarding: 로컬의 SSH 인증 키를 원격 서버에 전달. 중개 서버를 통해 여러 서버에 접근할 때, 키를 복사하지 않고도 인증 가능.
두 기능은 서로 보완적입니다. 예를 들어, 점프 서버를 통해 내부 시스템에 접근하면서도, 그 다음 서버들에도 로컬 키로 인증하고 싶다면 두 기능을 함께 사용해야 합니다.
결합 사용 예시
Host jump-server
HostName gateway.example.com
User admin
ForwardAgent yes
Host internal-host
HostName internal.service.local
User appuser
ProxyJump jump-server
이 설정을 통해:
- 먼저
jump-server에 연결. - 그 이후
internal-host에 접근할 때, 로컬의 SSH 에이전트가 활성화되어 있어, 키 전달이 가능.
결과적으로, 중계 서버를 통해 내부망에 접근하면서도, 모든 인증 과정에서 로컬 키를 사용할 수 있습니다.