동일한 호스트 하드웨어에서 실행되는 다른 가상 머신에서 가상 머신의 TCP 포트에 액세스하기 위한 SSH 포트 전달 구성

동일한 호스트 하드웨어에서 실행되는 다른 가상 머신에서 가상 머신의 TCP 포트에 액세스하기 위한 SSH 포트 전달 구성

상상하다

내 산업용 PC에는 두 가지 운영 체제(가상 머신)가 있습니다.

  1. PLC 컨트롤러와 통신하는 실시간 운영 체제
  2. 범용 Linux(Ubuntu 20.04) 배포

두 운영 체제 간에 사용 가능한 유일한 연결은 가상 네트워크를 통해서입니다.

가상 네트워크

  • Linux 호스트가 192.168.3.1IP 주소로 설정 되었습니다.
  • RTOS 호스트가 192.168.3.2IP 주소로 설정 되었습니다.

데이터

8580PLC 컨트롤러에 의해 생성된 데이터는 Linux 호스트에 액세스할 수 있는 포트에 의해 제어 및 구성됩니다. 즉, 192.168.3.2:8580(포트에서 사용 가능한 RTOS에서 OPC-UA 서버 실행 8580)

장면 설명 다이어그램

필요하다

8580최종 사용자가 DHCP에서 제공하는 Linux 시스템의 IP 주소를 통해 OPC UA 서버에서 데이터를 읽기 위해 RTOS의 포트에 액세스할 수 있도록 Linux 시스템에 SSH 터널을 생성하고 싶습니다.

최종 사용자는 여기에서 데이터를 읽을 수 있습니다 <IP-address-PC>:8580( IP-address-PC가상 네트워크와 동일하지 않지만 DHCP 서버에서).

그러나 나는안전하고 예약된 세션이 터널에서.

안전하고 예약된 세션

  • 터널 생성 시간은 제한되어야 합니다.
  • 터널이 생성되면 다음만 허용해야 합니다.단 한번의 만남
  • 세션이 끝나면 터널이 닫힙니다.

예비조사

나는 경험했다wikibooks for OpenSSH Tunneling Chapter사용한다고 언급되어 있습니다.단일 중간 호스트를 통한 터널링이것이 트릭을 수행하는 것 같습니다

무너지다

ssh -f -g -L 8580:192.168.3.2:8580 admin@localhost sleep 60

-f:백그라운드에서 프로세스 실행

-g:원격 사용자가 로컬 포트(Linux에서는 8580)에 액세스하도록 허용합니다.

-L: 로컬 포트 ​​포워딩, RTOS에서 무슨 일이 일어나든 192.168.3.2:8580여기로 포워딩됩니다.

admin@localhost: RTOS에는 SSH가 없는 것으로 밝혀졌으므로 이 터널을 유지하는 유일한 방법은 에 대한 연결을 유지하는 것입니다 localhost. 명령을 처음 실행할 때 여전히 비밀번호를 입력해야 합니다.

sleep 60: 사용자가 서버에 연결을 시도할 때까지 60초 동안 대기하고, 연결할 수 없으면 터널을 닫습니다.

타이밍 터널 문제를 해결한 것 같습니다 sleep 60.

sshd_config및 세션

하나의 세션만 사용할 수 있도록 터널을 설정하고 싶습니다. 이것을 통제할 수 있나요?

위 단계를 구성으로 어떻게 코드화할 수 있나요 sshd_config?한 번사용자는 누구입니까 admin?

편집하다

일부 특정 요구 사항에 따라 사용자는 sshRTOS에서 데이터를 얻으려고 할 때 실제로 위 명령을 수동으로 트리거합니다. 특정 상황에서 SSH 터널을 닫을 수 있는 메커니즘을 찾고 있습니다.비활성일정 시간이 지난 후.

대부분의 경우 사용자는 다음을 원할 수 있습니다.나타나다OPC-UA 서버의 데이터를 입력하고 만족스러우면 보안상의 이유로 터널을 닫습니다.

관련 정보