14

SSH.NETlocalhost:3306を使用して、リモート マシンのポート 3306 へのトンネルを作成しようとしています。

  PrivateKeyFile file = new PrivateKeyFile(@" .. path to private key .. ");
  using (var client = new SshClient(" .. remote server .. ", "ubuntu", file))
  {

      client.Connect();
      var port = new ForwardedPortLocal(3306, "localhost", 3306);
      client.AddForwardedPort(port);
      port.Start();

            // breakpoint set within the code here

      client.Disconnect();
  }

ブレークポイントにヒットすると、client.IsConnectedが返されますがtruetelnet localhost 3306接続されていません。代わりに Putty を使用して接続を作成し、そこに同じトンネルをセットアップすると、成功します。私は何を逃したのですか?

4

2 に答える 2

0

同じ問題に遭遇して分析した結果、これはバグであるという結論に達しました (議論の余地があると考えられるかもしれませんが、その動作は明らかに SSH.NET API のユーザーを驚かせます)。

そこで、ローカル トンネルでの予期しない動作 (別名バグ) · Issue #117 · sshnet/SSH.NET · GitHubで報告しました。

修正されるまでは、C# の回避策 - SSH トンネル内での転送ポートの作成 - スタック オーバーフローが機能します。

于 2016-11-16T19:37:50.917 に答える