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>
。