2

Windows XP で cygrunsrv と autossh を使用して、リモート サーバーへのトンネルを構築するサービスを作成していますが、リモート サーバーから別のサーバーへの別のトンネルも作成したいと考えています。

このコマンドラインでそれを達成できます:

autossh -M 5432 serverA -t 'autossh -M 4321 serverB -N'

しかし、サービスとして動作させるために cygrunsrv を介して cygwin にセットアップしたい場合:

cygrunsrv -I TUNNEL -p /usr/bin/autossh -a "-M 5432 serverA -t 'autossh -M 4321 serverB -N'" -e AUTOSSH_NTSERVICE=yes -e AUTOSSH_POLL=20 -e AUTOSSH_GATETIME=30

完全に機能していません。サービスは ServerA へのトンネルを正しく作成していますが、autossh コマンド「autossh -M 4321 serverB -N」を ServerA に送信していません。引用を回避しようとしましたが、すべての努力で違いはなく、autossh ログにコマンドが送信されていません。

問題は、cygrunsrv を介して作成されていない疑似端末に関連していると思います。

cygrunsrv コマンドラインを修正して機能させる方法があるかどうかを知りたいですか、それとも別のアプローチを検討する必要がありますか?

4

1 に答える 1

3

ライオネル、AUTOSSH_NTSERVICE=yescygrunsrvの呼び出しからを削除してみてください。/usr/share/doc/autossh/README.Cygwinが説明するように:

呼び出し環境でAUTOSSH_NTSERVICE=yesを設定すると、次の3つの便利な方法でautosshの動作が変更されます。

(1)sshを呼び出すたびに-Nフラグを追加して、シェルアクセスを無効にします。autosshをシステムサービスとして実行している場合は、それを使用してポートを転送しているという考え方です。シェルセッションをシステムサービスとして実行することは意味がありません。(この理由が間違っていると思われる場合は、バグレポートを作成者またはCygwinのメンテナに送信し、何をしようとしているのかを教えてください。)

-N上記のことにもかかわらず、サービスのssh呼び出しで(コマンドの実行を抑制する)望まないのには十分な理由があるようです。削除するAUTOSSH_NTSERVICE=yes必要があります。他にもいくつかの小さな欠点がありますが、おそらくそれと一緒に暮らすことができます。詳細については、README.Cygwinの残りの部分をお読みください。

于 2011-12-30T19:01:55.870 に答える