웹사이트 검색

Linux에서 SSH 점프 서버를 설정하는 방법


점프 호스트(점프 서버라고도 함)는 원격 네트워크에 대한 중간 호스트 또는 SSH 게이트웨이이며, 이를 통해 다른 호스트에 연결할 수 있습니다. 다른 보안 구역(예: 비무장지대(DMZ)). 두 개의 서로 다른 보안 영역을 연결하고 두 영역 사이에 제어된 액세스를 제공합니다.

점프 호스트는 특히 개인 네트워크와 인터넷 사용자에게 서비스를 제공하는 서버가 있는 DMZ에 걸쳐 있을 때 매우 안전하고 모니터링되어야 합니다.

일반적인 시나리오는 방화벽으로 보안이 강화된 회사 내부 네트워크 내부의 데스크탑이나 노트북에서 DMZ로 연결하는 것입니다. DMZ에 있는 서버를 쉽게 관리하려면 점프 호스트를 통해 액세스할 수 있습니다.

간단히 말해서 SSH 점프 서버는 SSH 프로토콜을 통해 개인 네트워크에 있는 다른 Linux 서버에 대한 게이트웨이로 사용되는 Linux 서버입니다.

이 문서에서는 점프 호스트를 통해 원격 Linux 서버에 액세스하는 방법을 설명하고 사용자별 SSH 클라이언트 구성에 필요한 설정을 구성합니다.

SSH 점프 서버 설정

다음 시나리오를 고려하십시오.

보다 명확하게 설명하기 위해 다음은 SSH 점프 서버의 역할을 보여주는 간단한 설정입니다.

SSH 점프 서버를 구성하는 이유

Jump 서버는 인프라에 대한 게이트웨이를 제공하고 리소스에 대한 잠재적 공격 표면을 줄입니다. 또한 장치의 투명한 관리는 물론 리소스에 대한 단일 진입점도 제공합니다.

점프 서버를 인프라에 통합할 때 서버가 강화되었는지 확인하십시오. 그렇지 않으면 서버를 사용하지 않는 것과 같습니다. 이에 대해서는 이 튜토리얼의 뒷부분에서 다시 다루겠습니다.

간단한 SSH 점프 서버를 만드는 방법

이제 간단한 SSH 점프 서버를 만드는 방법에 집중하겠습니다. 다음은 간단한 설정입니다.

  • 발신 IP: 105.68.76.85.
  • 점프 서버 IP(이것을 호스트 점프라고 부르겠습니다): 173.82.232.55.
  • 대상 IP(host_destination이라고 함): 173.82.227.89.

위의 경우 HOST 2(173.82.227.89)에 연결하고 싶지만 방화벽 때문에 HOST 1(173.82.232.55)을 거쳐야 합니다. 라우팅 및 액세스 권한. 점프 호스트가 필요한 데에는 여러 가지 타당한 이유가 있습니다.

동적 점프호스트 목록

점프 호스트를 통해 대상 서버에 연결하는 가장 간단한 방법은 명령줄에서 -A-J 플래그를 사용하는 것입니다. 이는 ssh가 점프 호스트에 연결한 다음 거기에서 대상 서버로 TCP 전달을 설정하도록 지시합니다(머신 간에 비밀번호 없는 SSH 로그인이 있는지 확인).

ssh -A -J user@jump-server  user@destination server

예를 들어, 설정에서 Jump Serverjames라는 사용자가 구성되어 있고 대상 또는 대상 시스템에 tecmint가 구성되어 있습니다.

명령은 원래 IP에서 다음과 같이 표시됩니다.

ssh -A -J [email  [email 

이 명령은 점프 서버의 사용자 비밀번호를 묻는 메시지를 표시하고 그 뒤에 대상 시스템에 대한 액세스 권한을 부여할 대상 시스템의 비밀번호를 입력합니다.

컴퓨터의 사용자 이름 또는 포트가 다른 경우 표시된 대로 터미널에서 지정하세요.

ssh -J username@host1:port username@host2:port	  

다중 점프호스트 목록

동일한 구문을 사용하여 여러 서버로 이동할 수 있습니다.

ssh -J username@host1:port,username@host2:port username@host3:port

정적 점프호스트 목록

정적 점프호스트 목록은 컴퓨터를 연결하는 데 필요한 점프호스트 또는 점프호스트를 알고 있음을 의미합니다. 따라서 ~/.ssh/config 파일에 다음 정적 점프호스트 '라우팅'을 추가하고 표시된 대로 호스트 별칭을 지정해야 합니다.

### First jumphost. Directly reachable
Host vps1
  HostName vps1.example.org

### Host to jump to via jumphost1.example.org
Host contabo
  HostName contabo.example.org
  ProxyJump vps1

이제 표시된 대로 점프 호스트를 통해 대상 서버에 연결해 보세요.

ssh -J vps1 contabo

두 번째 방법은 ProxyCommand 옵션을 사용하여 ~.ssh/config 또는 $HOME/에 jumphost 구성을 추가하는 것입니다. ssh/config 파일을 보여줍니다.

이 예에서 대상 호스트는 contabo이고 jumphostvps1입니다.

Host vps1
	HostName vps1.example.org
	IdentityFile ~/.ssh/vps1.pem
	User ec2-user

Host contabo
	HostName contabo.example.org	
	IdentityFile ~/.ssh/contabovps
	Port 22
	User admin	
	Proxy Command ssh -q -W %h:%p vps1

변경 사항을 저장하고 파일을 종료합니다. 변경 사항을 적용하려면 SSH 데몬을 다시 시작하세요.

sudo systemctl restart ssh

구성 파일에 사용된 옵션을 살펴보겠습니다.

  • -q – 자동 모드를 나타냅니다. 경고 및 진단 메시지를 표시하지 않습니다.
  • -W – 클라이언트의 표준 입력 및 출력이 보안 채널을 통해 PORT의 HOST로 전달되도록 요청합니다.
  • %h – 연결할 호스트를 지정합니다.
  • %p – 원격 호스트에 연결할 포트를 지정했습니다.

점프 서버를 통해 원본 IP에서 대상 시스템으로 '점프'하려면 다음 명령을 실행하세요.

ssh contabo

위 명령은 먼저 ProxyCommand의 영향을 받는 백그라운드에서 vps1에 대한 SSH 연결을 연 다음 대상 서버 contabo에 대한 SSH 세션을 시작합니다. 강하다>.

SSH 점프 서버를 더욱 안전하게 만들기

이 설정을 더욱 안전하게 만드는 방법 중 하나는 공개 SSH 키를 원래 시스템에서 점프 서버로 복사한 다음 마지막으로 대상 시스템으로 복사한 다음 비밀번호 인증을 비활성화하는 것입니다. SSH 비밀번호 없는 인증을 활성화하는 방법에 대한 가이드를 확인하세요.

또한 SSH 서버 강화 팁도 확인하세요.

또한 민감한 데이터가 Jump 서버 내에 보관되어 있지 않은지 확인하세요. 이로 인해 사용자 이름 및 비밀번호와 같은 액세스 자격 증명이 유출되어 시스템 전체에 침해가 발생할 수 있습니다.

자세한 내용은 ssh 매뉴얼 페이지를 참조하거나 OpenSSH/Cookbxook/프록시 및 점프 호스트를 참조하세요.

지금은 여기까지입니다! 이 기사에서는 점프 호스트를 통해 원격 서버에 액세스하는 방법을 설명했습니다. 질문이 있거나 의견을 공유하려면 아래 피드백 양식을 사용하세요.