동적으로 전달된 SSH 세션을 활성 상태로 유지하고 임의로 종료하는 방법은 무엇입니까? [폐쇄]

동적으로 전달된 SSH 세션을 활성 상태로 유지하고 임의로 종료하는 방법은 무엇입니까? [폐쇄]

내가 찾은누구다음을 통해 SSH 세션을 활성 상태로 유지하세요.

ssh -f -D $port $SSH_HOST "
    if [ -f ~/.tunnel ]; then
        rm ~/.tunnel;
    fi;
    while [ ! -f ~/.tunnel ]; do
        echo > /dev/null;
    done
" &

다음을 통해 SSH 세션을 종료합니다.

ssh $SSH_HOST "touch ~/.tunnel" 
  1. 파일이 pid 파일과 동일한 방식으로 사용됩니까? 이 접근 방식을 더 많은 상황이나 일반적인 상황에 사용할 수 있나요?

  2. SSH 세션을 활성 상태로 유지하고 종료하려면 파일을 사용해야 합니까? 더 좋은 방법이 있나요?

감사해요.

답변1

간단한 개선

이 기술을 사용하면 원격 컴퓨터의 연결을 종료할 수 있습니다. 몇 가지 변화를 제안합니다

  • while 루프를 추가하면 sleep기다리느라 CPU 시간을 낭비할 필요가 없습니다.
  • 프로세스를 반대로 진행하세요. 세션을 종료하려면 처음에 해당 파일을 터치한 후 삭제하세요. 원하는 경우 파일에 PID를 포함할 수 있는 옵션이 제공됩니다.

이것이 필요합니까?

세션을 종료하려면 질문의 방법을 피하고 다음을 사용합니다.

SSH -N -D $port $SSH_HOST &

그러면 셸 없이 연결이 백그라운드 작업으로 설정됩니다( -N셸을 비활성화하고 &백그라운드 작업으로 설정).

다음 명령을 사용하여 (로컬) PID를 얻고 다음 명령 $!을 사용하여 종료할 수 있습니다.kill

예를 들어:

SSH -N -D $port $SSH_HOST &
TUNNEL_PID=$!

# Do some other stuff

kill $TUNNEL_PID

답변2

@PhilipCouling이 쓴 것 외에도 이상하지만 효과적인 작은 유틸리티가 있습니다.스피너,대화형 터미널 세션이 열려 있을 때 유용합니다. 원격 호스트에서 실행합니다. 가끔씩 로컬 클라이언트에 더미 패킷을 보내는 것 외에는 많은 작업을 수행하지 않습니다.질소초(나는질소= 120, 예). 가상 사람은 연결을 활성 상태로 유지합니다.

이것이 당신이 원하는 것인지 확실하지 않지만 그것이 바로 그것입니다.

관련 정보