私の設定:
debian 10.9
4.19.0-19-amd64
OpenSSH_7.9p1 Debian-10+deb10u2, OpenSSL 1.1.1d 10 Sep 2019
autossh 1.4g
GNU bash, 5.0.3(1)-release (x86_64-pc-linux-gnu)
サービスを開始します。/etc/systemd/system/myshh.service
ExecStart=/home/user/ssh_run
私のスクリプトを始めるssh_run
これは私が試したSSHとAUTOSSHの多くの例の2つです。
ssh_runスクリプト
#!/bin/bash
ssh -f -NT -o "ServerAliveInteval=30" -o "ServerAliveCountMax=2" \
-R 5555:localhost:443 -l [USER] [IP] -p [PORT] -i [KEY-WITHOUT-PASSWORD]
EXECUTE NEXT COMMAND
または
#!/bin/bash
/usr/bin/autossh -f -NT -o "ExitOnForwardFailure=yes" \
-R 5555:localhost:443 -l [USER] [IP] -p [PORT] -i [KEY-WITHOUT-PASSWORD]
EXECUTE NEXT COMMAND
シェルから個別にコマンドを実行すると動作します。
ssh -f -NT ......
スクリプトを実行すると機能します。
./ssh_run
サービスを開始したが機能しない
/etc/systemd/system/myshh.service
とき-f
3つのコマンドはすべて次のコマンドを実行しません。
質問:
/etc/systemd/system/myshh.service
スクリプト./ssh_run
とバックグラウンドを使用してサービスを開始すると、-f
次のコマンドが実行されますが、サービスはステータスコード0で終了しますが、sshまたはautosshはps aux | grep [s]sh
ありません。ps aux | grep [a]utossh
systemctl status myshh.service
grep
私もエラーがないことを確認しました。journalctl
Restart=30
サービスが停止または再起動されましたが、同じ結果が発生しました。サービスの有無にかかわらず試しました。Restart=always
Environment="AUTOSSH_GATETIME=0"
すべてのスタックサイトの投稿のほとんどを読み、検索エンジンを試してみましたが、解決策が見つかりませんでした。試してみましたが(command)
....結果はありません....exec
bash -c
今私の質問/質問:
次のコマンドを実行するためにバックグラウンド(つまりサービスで起動された)bashスクリプトでssh / autosshリモートポートフォワーディングコマンドを実行するにはどうすればよいですか?
答え1
誰もが同じ問題を抱えている場合は、この投稿で今すぐ私の一日を節約できます。
私のsystemctlサービスが開始されない理由を見つける方法
Type=forking
私のサービスファイルに追加されました/etc/systemd/system/myshh.service
。
-f
これで、バックグラウンド実行オプションを使用してbashスクリプトからssh / autosshリモートポート転送コマンドを実行できるようになりました。つまり、サービスから起動してスクリプトから次の/追加コマンドを実行できます。
関連情報を含む投稿への追加リンク: