터미널/세션을 자동으로 종료하는 백그라운드 SSH 터널을 설정하는 방법은 무엇입니까?

터미널/세션을 자동으로 종료하는 백그라운드 SSH 터널을 설정하는 방법은 무엇입니까?

내가 원하는 것은 다음과 같습니다.

  1. Linux 시스템의 백그라운드에서 SSH 터널을 설정할 수 있습니다(실제로는 .bashrc에 설정하고 싶습니다).
  2. SSH 터널 프로세스가 활성화된 경우에만 해당 머신의 모든 사용자로서 언제든지 이 터널을 사용하여 프로세스를 실행할 수 있습니다.
  3. 터미널/세션을 종료하면 SSH 터널도 종료되어야 합니다.

Linux에서 다음과 같이 백그라운드 SSH 터널을 설정할 수 있다는 것을 알고 있습니다.

ssh -Nf -L 8000:1.2.3.4:8000 [email protected]

이 터미널/세션을 종료해도 이 SSH 터널은 여전히 ​​백그라운드에서 실행 중입니다.

자동으로 종료되도록 하려면 어떻게 해야 합니까?

내 경우에는 (멍청한 회사 방화벽을 우회하기 위해) 서버에 로그인할 때마다 거의 매번 SSH 터널을 설정해야 했습니다. 반면에 나는 로그아웃하고 아무것도 남기지 않는 것을 선호합니다.


참고하세요:
http://www.g-loaded.eu/2006/11/24/auto- looking-ssh-tunnels/내 요구 사항을 충족하지 않습니다. SSH 터널 프로세스 직후에 프로세스를 시작해야 하고, 첫 번째 SSH 터널 작업이 완료되면 두 번째 작업을 위해 SSH 터널을 다시 설정해야 하기 때문입니다. 반면에 더 긴 절전 시간을 설정하면 SSH 터널이 터미널에서 종료되지 않습니다.

.bash_logout을 편집할 수도 있나요? 저는 스크립팅을 포함하지 않는 스마트한 솔루션을 기대하고 있습니다.

답변1

특정 사용자가 컴퓨터에 로그인하면 ~/.bashrc 파일이 로드되고 bashrc 파일에 의해 시작된 모든 프로세스는 해당 사용자의 세션을 상위 프로세스로 갖게 됩니다. 이제 사용자 세션이 종료되지 않으면 프로세스가 자동으로 종료되지 않습니다.

bashrc 파일에서 터널 명령을 사용하는 것은 현명하지 않다고 생각합니다. 대신 bashrc 파일에서 터널 명령에 대한 별칭을 생성할 수 있습니다. 특정 터미널에서 별칭을 호출하고 해당 터미널을 닫으면 이제 터널의 상위 터미널이 해당 터미널이 되므로 터널이 중지됩니다.

관련 정보