Windowsでは、Windowsの起動時にスケジュールされたタスクを作成します。
C:\cygwin64\bin\ssh.exe -R 2222:127.0.0.1:3389 user@PublicHost
rdpサービスをpublic-ipサーバーに公開し、rdpに正常に接続できますが、タスクマネージャーでssh.exeが見つかりません。また、Windowsをシャットダウンすると、PublicHostの2222ポートが解放されないことがあるため、後で起動します。再びウィンドウズ、ssh.exeは私に警告を出します、ポート転送は失敗しました。
PublicHostにポートを解放するように依頼する方法はありますか(PublicHostにルートアクセス権がありません)?
ClientAliveCountMax
およびClientAliveInterval
sshd_configオプションを確認することをお勧めします。これは、sshdが制御不能な方法でダウンした接続を検出し、そのような場合にクリーンアップするのに役立ちます。
フォアグラウンドでsshを実行して、シェルプロンプトを取得し、sshセッションからログアウトすることはできますか?
Windowsがシャットダウンしてssh.exeを終了している場合は、そのポートを閉じる必要があるためです。また、サーバーから解放されない場合は、独自のkillシグナルを送信しても、同じ効果が得られる可能性があります(タスクマネージャーで見つけることができた場合)。
または、PublicHostに(手動またはスクリプトで)ログインして、その側の処理(UIDの/ bin/bashなど)を強制終了して、接続を切断することもできますか?
PublicHostのポート2222に接続するだけの場合は、トンネルを介してトラフィックを送信しようとする必要があります。これにより、タイムアウト(数分後)またはリセット応答(即時)が受信され、接続が閉じられ、sshdプロセスが終了します。
これは任意の数のツールを使用して行いますが、Windowsから自動的に行う1つの方法は次のとおりです。
C:\cygwin64\bin\ssh.exe user@PublicHost "echo x | nc 127.0.0.1 2222"