You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# SSH连接Avocent ACS6000失败:认证及MAC算法问题

问题解决:C# SSH.NET连接Avocent ACS6000的认证与MAC算法问题

问题概述

用C# WinForms结合Renci.SshNet库连接Avocent ACS6000设备时,抛出异常:No suitable authentication method found to complete authentication (publickey,keyboard-interactive)。相同代码连接Windows SSH Server正常;但用CMD的OpenSSH客户端连接该设备时,必须携带-m hmac-sha2-512参数才能成功,不带则出现“Corrupted MAC on input”的MAC校验错误。

解决方案

1. 强制指定SSH.NET使用hmac-sha2-512 MAC算法

Avocent ACS6000可能仅支持特定MAC算法,而SSH.NET默认算法列表未包含hmac-sha2-512,需手动在连接配置中指定。通过ConnectionInfo对象可自定义加密算法集合。

2. 适配设备支持的认证方式

异常提示设备仅支持publickey和keyboard-interactive认证,当前代码使用的简单密码认证不匹配,需添加KeyboardInteractiveAuthenticationMethod处理交互式认证流程(即使设备最终仅验证密码)。

修改后的代码示例

// 构建连接信息,配置认证方式
var connectionInfo = new ConnectionInfo(
    IPadress,
    port,
    username,
    new KeyboardInteractiveAuthenticationMethod(username),
    new PasswordAuthenticationMethod(username, password) // 保留密码认证作为备选
);

// 强制设置MAC算法为hmac-sha2-512
connectionInfo.MacAlgorithms.Clear();
connectionInfo.MacAlgorithms.Add("hmac-sha2-512");

sshclient = new SshClient(connectionInfo);
try
{
    OutputRichTextBox.AppendText("SSH Conecting..." + Environment.NewLine);
    sshclient.Connect();
    if (sshclient.IsConnected)
    {
        OutputRichTextBox.AppendText("Connected to Server" + Environment.NewLine);
    }
    else
    {
        OutputRichTextBox.AppendText("Ping failed." + Environment.NewLine);
    }
}
catch (Exception ex)
{
    // 捕获异常便于排查具体问题
    OutputRichTextBox.AppendText($"Error : {ex.Message}" + Environment.NewLine);
}

关于Windows默认使用hmac-sha2-512的说明

若要让Windows自带的OpenSSH客户端默认使用该算法,可在用户目录下新建或修改.ssh\config文件,添加如下内容:

Host your-acs6000-ip
    MACs hmac-sha2-512

但此设置仅对系统自带SSH客户端生效,你的WinForms程序仍需在代码中单独配置——因为SSH.NET库的算法配置独立于系统设置。


内容的提问来源于stack exchange,提问作者Hex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 21:10:12