在 C# 应用程序中使用 Plink 会话时逃避 SSH 主机验证

Escape from SSH host verification on use of Plink session in C# application

我正在创建一个应用程序是 C#,我刚刚遇到 PuTTY 的 SSH 主机验证问题。

尝试 运行 Plink 会话时。

当我已经 运行 这个特定的主机时,我已经 运行 进入主机密钥缓存问题。

像这样:

If you want to carry on connecting just once, without adding the key to the cache, enter "n". If you do not trust this host, press Return to abandon the connection. Store key in cache? (y/n)

我想自动写"yes"的想法。

在互联网上进行了一些挖掘之后,我找到了一个解决方案:

echo y | plink.exe <the rest of arguments>

但是我使用下面代码的问题:

var processStartInfo = new ProcessStartInfo()
    {
        CreateNoWindow = true,
        FileName = Path.Combine(@"plink.exe"),
        Arguments = string.Format(@"-L {0}:{1}:{2} {3}@{4} -pw ""{5}"" -N -v", {Local forwarding port}, "localhost", {Host port}, "root", ProxyIpAfterPicked, textBox2.Text),
        RedirectStandardError = true,
        RedirectStandardInput = true,
        RedirectStandardOutput = true,
        UseShellExecute = false
    };

我注意到有些人的示例通过了 StreamWriter.Writeline("y"),但它也不起作用。 有什么方法可以使用该特定代码只是为了向它添加参数或我真的一无所知。

  • 切勿通过 y 盲目接受任何主机密钥。这样做会失去安全感。
    正确解法见:
    How to pass echo y to plink.exe for first connection
  • 不要使用外部应用程序实现SSH。使用一些本机 .NET SSH 库,例如 SSH.NET.