ssh 원격 시스템에 처음 액세스 할 때 ControlMaster 백그라운드 프로세스 자동 생성


9

최근에 종종 SSH 클라이언트의 ControlMaster 기능을 사용하고 있습니다.이 기능을 사용하면 동일한 원격 시스템으로 여러 쉘 및 포트 전달에 단일 SSH-TCP 연결을 사용할 수 있습니다. 이것에 대한 가장 성가신 것은 열린 첫 번째 셸 프로세스가 자동으로 ControlMaster가된다는 것입니다. 즉,이 프로세스가 종료되면 제어 마스터 연결을 사용하는 다른 모든 셸 및 포트 전달을 사용할 수 없게됩니다.

원격 시스템에 대한 첫 번째 ssh 명령이 ControlMaster 연결을 사용하는 연결이있는 한 연결을 유지하는 추가 백그라운드 프로세스를 생성 할 때 정말로 원합니다. 사이. 이상적으로 백그라운드 ControlMaster 프로세스는 새 쉘 또는 포트 전달에서 ControlMaster를 사용하기 전에 일정 시간 동안 기다렸다가 마지막으로 종료하도록 구성 할 수도 있습니다.

ssh 클라이언트가 그런 일을 할 수있는 방법이 있습니까? ssh를 사용하여 첫 번째 셸을 만들기 전에 이러한 연결을 수동으로 만들 수 있다는 것을 알고 있지만 그렇지 않은 경우 반드시 매번 잊어 버릴 것이므로 명시 적으로 자동으로 발생하기를 원합니다.

래퍼 스크립트를 사용하면 .ssh / config의 원격 서버 이름에 대해 구성된 속기를 사용하고 ControlMaster 소켓이 USERNAME @ NETWORK_NAME : NETWORK_PORT를 이름으로 사용하여 생성되기 때문에 쉽지 않습니다. 따라서 래퍼는 의도 한대로 작동하려면 .config / ssh를 완벽하게 이해해야합니다.

답변:


10

ControlPersist 구성 옵션을 사용해야합니다.

 ControlPersist
         When used in conjunction with ControlMaster, specifies that the
         master connection should remain open in the background (waiting
         for future client connections) after the initial client connec‐
         tion has been closed.  If set to “no”, then the master connection
         will not be placed into the background, and will close as soon as
         the initial client connection is closed.  If set to “yes”, then
         the master connection will remain in the background indefinitely
         (until killed or closed via a mechanism such as the ssh(1) “-O
         exit” option).  If set to a time in seconds, or a time in any of
         the formats documented in sshd_config(5), then the backgrounded
         master connection will automatically terminate after it has
         remained idle (with no client connections) for the specified
         time.

ControlPersist no 는 기본 동작이며 설명과 같습니다. 내가 사용 ControlPersist 4 시간을 배경 세션이 주기적으로 자신을 정리할 수 있도록.


RHEL에서 사용할 수 있습니까?
ewwhite

1
@ewwhite RHEL이 없지만 CentOS는 동일해야합니다. CentOS 7에 있지만 CentOS 6.5에는없는 것으로 보입니다. OpenSSH의 변경 로그는 OpenSSH를 5.6에서 추가되었다 제시하고, CentOS는 단지 5.3 (7.0에서 OpenSSH 6.4을 가지고)가 6.x로
다니엘 로슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.