상상하다
내 산업용 PC에는 두 가지 운영 체제(가상 머신)가 있습니다.
- PLC 컨트롤러와 통신하는 실시간 운영 체제
- 범용 Linux(Ubuntu 20.04) 배포
두 운영 체제 간에 사용 가능한 유일한 연결은 가상 네트워크를 통해서입니다.
가상 네트워크
- Linux 호스트가
192.168.3.1
IP 주소로 설정 되었습니다. - RTOS 호스트가
192.168.3.2
IP 주소로 설정 되었습니다.
데이터
8580
PLC 컨트롤러에 의해 생성된 데이터는 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
?
편집하다
일부 특정 요구 사항에 따라 사용자는 ssh
RTOS에서 데이터를 얻으려고 할 때 실제로 위 명령을 수동으로 트리거합니다. 특정 상황에서 SSH 터널을 닫을 수 있는 메커니즘을 찾고 있습니다.비활성일정 시간이 지난 후.
대부분의 경우 사용자는 다음을 원할 수 있습니다.나타나다OPC-UA 서버의 데이터를 입력하고 만족스러우면 보안상의 이유로 터널을 닫습니다.