클라이언트 측 NAT GSM 모뎀 뒤에서 역방향 SSH 터널링을 사용하고 있습니다. 끔찍하게 들리지만 괜찮습니다. 나는 다음 지시문을 사용합니다.
ssh -o ServerAliveInterval=60 -f -N -T -R12345:localhost:22 domain.com -i private_key.ppk
세션이 잘 진행되고 있습니다. CG-NAT으로 인해 공용 인터넷에서는 액세스할 수 없지만 터널을 사용하여 컴퓨터에 연결할 수 있습니다. 여태까지는 그런대로 잘됐다. 그런데 연결이 끊겼을 때 이런 상황에 대한 해결책이 필요합니다. 원격지에서 어떻게 캡쳐하나요? 잡을 수 있다면 어떻게 해야 할까요? cron 작업이나 이와 유사한 작업을 구성하는 것은 괜찮지만 지금은 커뮤니티의 도움이 필요합니다. 미리 감사드립니다.
답변1
영감을 주신 @Cocaine Mitch에게 감사드리며 첫 번째 쉘 스크립트를 작성했습니다. 실행 중인 프로세스를 확인하고 목록에 ssh가 없으면 다른 스크립트가 실행되고 있는 것입니다. 스크립트는 cron에 의해 예약되며 20분마다 확인합니다. (크론 작업 정의 */20 * * * * * root /root/checkscript.sh
:)
#!/bin/sh
logger "######### ssh_check.sh script is startig."
i=0
logger "Value of initial i = " $i
txt1=$(ps ax | grep "[s]sh -p 22 -o ServerAliveInterval=60 -y -f -N -R12345:localhost:22 mydomain.com")
if [ ! -z "$txt1" ]
then
i=$((i+=1))
fi
logger "Value of txt1 = " $txt1
logger "Value of i = " $i
txt2=$(ps ax | grep "[s]sh -p 22 -o ServerAliveInterval=60 -y -f -N -R12346:localhost:80 mydomain.com")
if [ ! -z "$txt2" ]
then
i=$((i+=1))
fi
logger "Value of the txt2 = " $txt2
logger "Value of i = " $i
if [ $i == 0 ]
then
/root/ssh_tunnel.sh
logger "Given patterns were not found. SSH Tunnel script is starting."
logger "####### ssh_check.sh script log is closing."
else
logger "At least one pattern has been found. Tunnel must be opened."
logger "###### ssh_check.sh script log is closing."
fi
ssh_tunnel.sh 스크립트의 내용
#!bin/sh
ssh -p 22 -o ServerAliveInterval=60 -y -f -N -R12346:localhost:80 mydomain.com
ssh -p 22 -o ServerAliveInterval=60 -y -f -N -R12345:localhost:22 mydomain.com