점프 호스트의 역할
배스천이라고도 하는 점프 호스트는 사용자가 직접 연결할 수 있으며 내부 서버에도 접근할 수 있는 서버입니다. 외부에는 배스천의 SSH 포트만 노출하고, 내부 서버는 내부 네트워크에서 오는 SSH 연결만 허용합니다. ProxyJump를 사용하면 클라이언트가 배스천에 SSH 연결 하나를 열고, 이를 통해 대상 서버까지 종단 간 암호화된 두 번째 연결을 엽니다. 배스천은 트래픽을 전달하지만 세션 내용을 볼 수 없으며, 개인 키는 사용자 컴퓨터에 남습니다.
명령줄에서 연결
-J 옵션으로 점프 호스트를 지정합니다. 여러 홉은 쉼표로 구분하며, 지정한 순서대로 거칩니다. 같은 경로를 정기적으로 사용한다면 ~/.ssh/config에 설정을 추가하여 짧은 별칭만으로 연결할 수 있습니다.
ssh -J admin@bastion.example admin@app.internal
ssh -J admin@bastion.example,ops@hop2.example admin@app.internal
# ~/.ssh/config
Host app-internal
HostName app.internal
User admin
ProxyJump admin@bastion.example모든 호스트 키 검증
각 홉은 고유한 호스트 키를 가진 별도의 SSH 서버이므로, 배스천과 대상 서버의 지문을 다른 신뢰할 수 있는 경로로 확인하세요. 어느 홉에서든 키가 바뀌면 직접 연결할 때와 똑같이 주의를 기울여야 합니다. 최초 연결 시 제시된 지문을 관리자가 서버에서 확인한 값과 비교하세요.
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256에이전트 포워딩보다 ProxyJump 사용
에이전트 포워딩(ssh -A)을 사용하면 배스천에서 충분한 권한을 가진 누구나 사용자가 연결되어 있는 동안 에이전트에 로드한 키를 사용할 수 있습니다. ProxyJump는 사용자 컴퓨터에서 대상 서버에 대한 인증을 수행하므로 에이전트 포워딩이 필요하지 않습니다. 배스천에 개인 키를 저장하는 것도 피하고, 로그인할 수 있는 사용자를 제한하세요.
흔한 연결 문제
먼저 어느 홉에서 실패하는지 확인하세요. 배스천에만 연결한 다음, -J를 지정한 ssh -vvv를 실행하여 연결이 어디서 멈추는지 확인합니다. 배스천은 정상인데 대상 서버에 연결할 수 없다면, 보통 두 서버 사이의 방화벽, 잘못된 내부 호스트 이름, 또는 대상 서버가 키를 허용하지 않는 것이 원인입니다. AllowTcpForwarding no로 설정된 서버는 점프 호스트로 작동하는 것을 거부합니다.
CH-J Server Manager의 점프 호스트
Alpha 0.1.1은 저장되었거나 수동으로 입력한 점프 호스트를 통해 연결하며, 저장된 호스트로 최대 세 개의 점프 호스트를 잇는 체인을 구성할 수 있습니다. 모든 홉에서 호스트 키를 확인합니다. 가용성 모니터는 점프 호스트로 열린 세션을 통해서만 그 뒤의 서버를 확인합니다. 해당 세션이 없으면 서버를 미검증 상태로 표시하며, 온라인으로 표시하지 않습니다. Beta 0.1.0에는 이 기능이 없습니다.