시나리오는 다음과 같습니다. 호스트가 4개 있습니다.
- 클라이언트/로컬호스트
- AWS 배스천 호스트(포트 22만 해당)
- 그래픽 데스크톱이 있는 EC2 인스턴스(프라이빗 서브넷)
- WebLogic Server 컨테이너를 실행하는 Docker가 있는 EC2 인스턴스(그래픽 없음)
문제: 배스천 호스트를 통해 인터넷 브라우저를 통해 이 WebLogic 서버에 액세스할 수 있어야 합니다. 이제 배스천 호스트의 포트 22만 사용할 수 있지만 나가는 연결은 모두 활성화됩니다.
내 생각은 배스천 호스트를 통해 TightVNC 뷰어와 SSH 터널을 사용하여 GUI 인스턴스에 도달하는 것입니다.
이제 내 문제는 내 요새 호스트가 사용자의 수신 포트 22를 대상 포트 5905로 전달하도록 하는 방법을 모른다는 것입니다. 요새 호스트에 대한 루트 액세스 권한이 없습니다.
지금까지 내가 찾은 모든 솔루션은 VNC를 사용하는 대신 명령줄을 통한 SSHing과 관련이 있습니다. 가능한 경우에만 사용자를 위해 포트 22 트래픽을 VNC 포트로 자동 전달하려면 배스천이 필요하지만 100% 필요한 것은 아닙니다.
public public private private
[user/client] --22-->[bastion]--VNC:5905-->[VNC Server]--80/443-->[Docker/WLS]
GUI CLI GUI CLI
답변1
배스천 서버가 명시적으로 SSH 터널링을 비활성화하거나 배스천 서버와 VNC 서버 호스트 사이에 방화벽이 있는 경우를 제외하고 이는 매우 일반적인 현상이며 공용 클라이언트 시스템이 ssh -L 5905:vnchost:5905 user@bastionhost
뒤따릅니다 .vncviewer localhost:5905
-L 5905:vnchost:5905
(또는 다음과 같이 작성됨) 매개변수는 -L localhost:5905:vnchost:5905
SSH 클라이언트 노드가 포트를 열고 클라이언트의 VNC 뷰어가 연결을 시작하려고 할 때 localhost:5905
배스천 호스트의 SSH 서버 데몬이 터널링을 시도해야 함을 의미합니다.vnchost:5905
연결을 설정할 수 없는 경우 SSH 세션에 오류 메시지가 표시됩니다(VNC 클라이언트에서도 오류가 발생할 수 있음).
답변2
동일한 설정이 있고 bastion이 요새의 호스트 이름이고 10.1.1.1이 ec2 인스턴스인 다음과 같이 구현했습니다.
ssh -v -l user -L 5901:localhost:5901 bastion ssh -o StrictHostKeyChecking=no -L 5901:localhost:5901 -N [email protected]
그런 다음 vnc를 통해 localhost:5901에 연결합니다.