SSH를 통해 원격으로 여러 명령을 실행하는 스크립트가 있습니다. 실행 사이에 다른 작업을 수행하고 싶기 때문에 각 명령을 개별적으로 실행합니다.
그러나 새 명령을 실행할 때마다 SSH 세션을 다시 생성하고 싶지 않습니다. 읽었 -oControlMaster
지만 제대로 작동하지 않는 것 같습니다.
내가 실행할 때 :
ssh -oControlMaster=yes -oControlPath=/tmp/test.sock root@host
비밀번호를 입력하면 SSH 세션이 시작됩니다. 종료하면 /tmp/test.sock
파일을 찾을 수 없습니다.
내가 무엇을 놓치고 있나요?
답변1
이 ControlPersist
옵션을 사용하면 서버와의 연결을 끊은 후 소켓을 떠날 수 있습니다.
예를 들어, 내 SSH 구성 파일에는 3초 동안 연결을 열어두는 이 조각이 있습니다.
주인 * 컨트롤 마스터 자동 ControlPath ~/.ssh/master-socket/%r@%h:%p #ControlPath /run/user/%i/sshmasterconn-%C #ControlPath ~/.ssh/%r@%h:%p 제어는 3초 동안 지속됩니다.
답변2
다른 연결에서 이를 사용하려면 기본 연결을 열어야 합니다.
소켓 파일은 기본 연결이 열려 있는 경우에만 사용할 수 있습니다. 기본 연결이 닫히면 소켓 파일이 삭제됩니다. 마스터 연결이 닫히면 열려 있는 "슬레이브" 연결도 모두 닫힙니다.