멀티플렉싱을 위해 구성된 SSH 세션을 유지하기 위해 autossh를 사용하고 싶습니다. 이를 통해 localhost에서 지속적인 SSH 연결을 활용하는 스크립트를 작성할 수 있습니다. ssh와 autossh가 동일하게 작동하도록 하는 데 문제가 있으며 누군가 나를 도와줄 수 있기를 바랍니다.
내 ~/.ssh/config 파일의 내용...
Host cg*
ServerAliveInterval 300
ServerAliveCountMax 2
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist yes
기본 SSH 연결을 만드는 중...
$ ssh -fNn jehudson@cg5
$ ps aux | grep ssh
jehudson 11813 0.0 0.1 5744 628 ? Ss 18:42 0:00 ssh -fNn cg5
연결이 재사용되고 있는지 확인하세요...
$ ssh -O check cg5
:
Master running (pid=11813)
기본 세션에서 세션 열기 및 닫기...
$ ssh cg5
$ ...
$ exit
Shared connection to cg5 closed.
이것은 잘 작동하는 것 같습니다. 이제 같은 일을 하고 싶지만 autossh를 사용하고 싶습니다.
기본 연결을 종료합니다...
$ ssh -O exit cg5
Exit request sent.
autossh를 통해 연결 열기...
$ autossh -M 0 -fNn jehudson@cg5
$ ps aux | grep autossh
jehudson 11826 0.0 0.1 3660 772 pts/1 S+ 18:45 0:00 grep --color=auto autossh
(!) 흠, 이상하네요... autossh가 시작되지 않는 것 같거나, 시작하더라도 매우 빨리 종료됩니다.
$ ps aux | grep ssh
jehudson 11823 0.0 0.1 5744 916 ? Ss 18:45 0:00 ssh: /home/jehudson/.ssh/control:cg5:22:jehudson [mux]
(!?) 터널이 열린 것 같은데, 생성 후 autossh가 계속 유지를 안 하더군요! 그리고 이번에 프로세스 설명에 제어 파일이 나열되는 이유는 무엇입니까?
$ ssh -O check cg5
Master running (pid=11823)
분명히 다중화된 SSH 세션이 설정되었지만 autossh에서는 모니터링되지 않습니다.
autossh가 허용하는 다양한 플래그 조합을 시도했지만 간단한 다중 SSH 연결을 열고 이를 백그라운드로 보내고 autossh로 모니터링하는 방법을 찾을 수 없습니다. 제가 놓쳤을 수 있는 내용을 발견했거나 시도해 볼 만한 제안 사항이 있으면 알려주시기 바랍니다.
답변1
autossh
플레이가 잘 된 것 같진 않네요 ControlPersist
. 활성화된 상태 로 두면 ControlPersist
해당 기간이 지나면 연결이 종료됩니다. 그래서:
autossh -f -M0 -N -oControlPersist=no $DEST