plink.exe
SSH リバース トンネルを確立するために C# アプリケーションから (PuTTY リンク、コマンド ライン ユーティリティ/PuTTY のバージョン)を起動しようとしましたが、正しいパラメーターを渡すとすぐに機能しなくなりました。
どういう意味ですか?-pw
以下は期待どおりに機能します。コマンド ライン ウィンドウが開き、引数 quitのパスワードを渡すのを忘れたことが表示され、プロンプトが表示されます。私が提供しなかったものを具体的に要求しているので、引数があることはわかっています。
Uri uri = omitted;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "cmd";
info.Arguments = "/k \"C:\\Program Files (x86)\\PuTTY\\plink.exe\" -R 3389:" + uri.Host + ":" + uri.Port + " -N -l username -pw"; // TODO pwd
Process p = Process.Start(info);
plink.exe
の代わりに直接呼び出すことで同じことを考えてみましたcmd.exe /k
が、ウィンドウがすぐに閉じてしまい、バグハンティングには残念です。
しかし、引数にパスワードを渡すとplink.exe
、プログラムのヘルプ (使用可能なパラメーターを表示) が表示され、終了します。
Uri uri = omitted;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "cmd";
info.Arguments = "/k \"C:\\Program Files (x86)\\PuTTY\\plink.exe\" -R 3389:" + uri.Host + ":" + uri.Port + " -N -l username -pw secretpassword";
Process p = Process.Start(info);
パラメータが欠落している兆候はありません。cmd /k
バリアントとバリアントの両方がplink.exe
機能しません (後者はすぐに閉じられるため、異なる動作に関する情報はありません)。
同じパラメーターを使用して Windows 7 のスタート メニュー ランチャーからアプリケーションを起動すると、cmd.exe
ウィンドウが開き、要求どおりに接続が確立されます。
どうしたの?plink.exe
実際のシェルで実行されていないことに気付く方法はありますか? はいの場合、スタートメニューの「プロンプト」のように、どうすれば回避できますか?
この質問が SO に当てはまることを願っています。これは、特に単一のアプリケーション向けではありますが、プログラムで正常に起動することを中心に展開しているためです。