Autossh用の信頼できるsystemdサービスを作成しようとしています。
サービスは機能しますが、ホストキーが変更された場合、サービスは正常な状態(実行中)です。
トンネルが機能しない場合は、「失敗」状態にします。
これが私の現在のsystemdサービスファイルです:
# Source is in srv/salt/tunnel/autossh\@.service
# which is a git repo.
# Don't edit /etc/systemd/system/autossh\@.service
[Unit]
Description=Tunnel For %i
After=network.target
[Service]
User=autossh
# https://serverfault.com/a/563401/90324
ExecStart=/usr/bin/autossh -M 0 -N -o "ExitOnForwardFailure yes" -o "ConnectTimeout=1" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 40443:installserver:40443 -R 8080:installserver:8080 tunnel@%i
Restart=always
[Install]
WantedBy=multi-user.target
これがsystemctl status autossh@foo-work
の出力です
salt:/srv # systemctl status autossh@foo-work
[email protected] - Tunnel For foo-work
Loaded: loaded (/etc/systemd/system/[email protected]; enabled)
Active: active (running) since Wed, 2016-02-10 14:35:01 CET; 2 months and 3 days ago
Main PID: 17995 (autossh)
CGroup: name=systemd:/system/[email protected]/foo-work
└ 17995 /usr/bin/autossh -M 0 -N -o ExitOnForwardFailure yes -o ConnectTimeout=1 -o ServerAliveInterval 60 -o ServerAliveCountMax 3 -R 40443:installserver:40443 -R ...
Apr 14 12:35:43 salt autossh[17995]: Host key verification failed.
Apr 14 12:35:43 salt autossh[17995]: ssh exited with error status 255; restarting ssh
Apr 14 12:45:42 salt autossh[17995]: starting ssh (count 618)
Apr 14 12:45:42 salt autossh[17995]: ssh child pid is 22524
Apr 14 12:45:43 salt autossh[17995]: Host key verification failed.
Apr 14 12:45:43 salt autossh[17995]: ssh exited with error status 255; restarting ssh
私の問題は、変更されたホストキーではありません。それで大丈夫です。
サービスに真実を教えてもらいたいだけです。トンネルが機能していない場合は、トンネルに表示してもらいたいのです。
Systemdサービスファイルを変更して正しいステータスを教えてもらうにはどうすればよいですか?
更新:2番目のフォローアップ質問を書きました: systemdはサービスが正常かどうかをどのように判断しますか
問題は、失敗したことではなく、サービスがアクティブであると見なしていることです。これは、次の10分で再起動されるためです。
私はそれを試しませんでしたが、うまくいくかもしれません。 Type=forking
とPIDFile
を追加してみてください
[Service]
...
Type=forking
Environment="AUTOSSH_PIDFILE=/path/to/pid"
PIDFile=/path/to/pid
simple
サービスでは、systemd
はそれらを追跡するのに問題が発生する可能性があります。