systemd에 1개의 서비스를 등록했습니다.
open_ssh.script
autossh -M 0 -L 8080:127.0.0.1:8080 -i .ssh/id_rsa USER@HOST -fN
auto_open_ssh.service
[Unit]
Description=SSH Tunnel Service
After=network.target
[Service]
ExecStart=open_ssh.script
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=default.target
서비스를 실행한 후 다음 로그를 받습니다.
Dec 29 11:07:41 ip-10-0-1-231.ap-southeast-1.compute.internal autossh[21036]: starting ssh (count 1)
Dec 29 11:07:41 ip-10-0-1-231.ap-southeast-1.compute.internal autossh[21036]: ssh child pid is 21046
Dec 29 11:07:41 ip-10-0-1-231.ap-southeast-1.compute.internal autossh[21036]: received signal to exit (15)
프로세스를 확인했는데 autossh가 표시되지 않았습니다. 서비스가 종료되고 하위 프로세스(autossh)가 자동으로 종료된 것으로 보입니다. autossh가 종료되는 것을 방지할 수 있나요?
답변1
autossh
systemd 서비스로 실행하는 경우 기본적 으로 옵션을 Type=simple
사용하면 안 됩니다 .-f
autossh
이 옵션을 계속 사용하려면 서비스 정의에 추가해야 합니다 -f
.Type=forking
또한 이것을 다음과 같이 사용하는 경우시스템 서비스(즉, 다음에 추가하세요 auto_open_ssh.service
.) 별도로 지정하지 않으면 /etc/systemd/system/
autossh가 시작되고 현재 작업 디렉터리가 로 설정되므로 SSH 키 파일의 전체 경로를 사용해야 합니다./
본 서비스를 다음과 같이 이용하는 경우사용자 서비스(에서 구성됨 ~/.config/systemd/user/auto_open_ssh.service
)은 systemd
를 사용하여 로그아웃할 때 사용자 계정이 프로세스를 계속 실행하도록 허용하지 않는 한 마지막 세션에서 로그아웃할 때 사용자 서비스를 중지합니다 loginctl enable-linger <your_username>
.