광산에서는 이 설정을 활성화 ~/.ssh/config
했습니다 ControlMaster auto
. 그것은 나에게 아주 효과적이지만, 나를 짜증나게 하는 한 가지 행동이 있어서 그것을 없애고 싶습니다.
두 개의 터미널 에뮬레이터 창 A와 B가 있다고 가정해 보겠습니다. 창 A에서는 원격 호스트에 연결을 호출하고 ssh
창 B에서도 동일한 작업을 수행합니다. 다음으로 exit
창 A를 입력하여 세션을 닫습니다. 연결을 끊었지만 ssh
창 A의 프로세스는 창 B의 프로세스가 원격 세션도 종료할 때까지 기다려야 하기 때문에 로컬 세션으로 종료되지 않습니다. 즉, 제어 소켓을 계속 실행해야 합니다.
창 A에서 연결을 끊으면 ssh
창 B의 세션이 계속 실행되는 동안 에서 호출했던 원래 로컬 세션으로 즉시 돌아가는 것을 선호합니다. 여러분은 다음과 같이 질문할 수 있습니다. 그렇다면 어떤 프로세스가 제어 소켓을 관리해야 합니까? 이상적으로는 더 이상 실행 중인 세션이 없으면 자동으로 연결이 끊어지는 사용자 시스템 인스턴스의 감독 하에 실행되는 전용 3차 프로세스가 되기를 바랍니다. 그러나 백그라운드 프로세스가 오래 지속되는 구식 접근 방식도 괜찮습니다.
나는 제어 소켓 호스트를 수동으로 시작하는 것을 피하고 싶습니다. 첫 번째 세션을 열면 자동으로 시작되어야 합니다.
괜찮나요?
답변1
다음과 같은 명령
ssh -f -N remote_host
ssh
원격 호스트에 대한 세션이 생성되지만 명령( -N
)과 배경 자체( -f
)는 실행되지 않습니다. 이 명령은 마스터 컨트롤로 사용할 수 있습니다.
다음과 같은 것을 터널링하고 싶다면
ssh -X -f -N remote_host
유휴 세션의 연결이 끊어진 경우(예: NAT 시간 초과로 인해) 다음과 같은 항목을 추가하세요.
-o ServerAliveInterval=30
(또는 config
파일의 이에 상응하는 항목)은 세션을 활성 상태로 유지하려고 시도합니다.