【问题标题】:cannot connect to Mac using RenciSSH无法使用 RenciSSH 连接到 Mac
【发布时间】:2016-12-28 12:54:25
【问题描述】:

我无法在 .NET 应用程序中使用 Renci.SshNet 库远程连接到 Mac 系统 (OS X 10.10.5)。我使用的代码允许我连接到任何其他 linux OS 系统,例如 RHL、Ubuntu 等。我可以通过 putty 连接到这个 Mac 系统。但是当我尝试从我的 .NET 应用程序连接时,它给了我以下错误 -

找不到合适的身份验证方法来完成身份验证(公钥、键盘交互)。来源 - Renci.SshNet

这是我的代码。请帮忙

public SshClient sshClient;
sshClient = new SshClient(ipAddress, port, username, password);
sshClient.KeepAliveInterval = TimeSpan.FromSeconds(60);
sshClient.Connect();

【问题讨论】:

    标签: c# macos ssh


    【解决方案1】:

    基于对 stackoverflow 的各种贡献,我认为 mac 要求进行键盘身份验证,而我的方法只有基于密码的身份验证。所以这个更新的代码两者兼而有之......感谢所有贡献者......

            public SshClient sshClient;
            KeyboardInteractiveAuthenticationMethod kauth = new KeyboardInteractiveAuthenticationMethod(username);
            PasswordAuthenticationMethod pauth = new PasswordAuthenticationMethod(username, password);
    
            kauth.AuthenticationPrompt += new EventHandler<Renci.SshNet.Common.AuthenticationPromptEventArgs>(HandleKeyEvent);
    
            ConnectionInfo connectionInfo = new ConnectionInfo(ipAddress, port, username, pauth, kauth);
    
            sshClient = new SshClient(connectionInfo);
            sshClient.KeepAliveInterval = TimeSpan.FromSeconds(60);
            sshClient.Connect();
    

    以及密码提示事件的此事件处理程序代码

            void HandleKeyEvent(Object sender, Renci.SshNet.Common.AuthenticationPromptEventArgs e)
        {
            foreach (Renci.SshNet.Common.AuthenticationPrompt prompt in e.Prompts)
            {
                if (prompt.Request.IndexOf("Password:", StringComparison.InvariantCultureIgnoreCase) != -1)
                {
                    prompt.Response = password;
                }
            }
        }
    

    【讨论】:

    • 谢谢 - 这对我来说非常有用。我进行了一项更改 - 以便处理程序可以传递密码:kauth.AuthenticationPrompt += (sender, e) =&gt; HandleKeyEvent(sender, e, password); 和签名更改:private static void HandleKeyEvent(Object sender, Renci.SshNet.Common.AuthenticationPromptEventArgs e, string password)
    • 谢谢!为我工作了一些更改(新库版本中没有端口参数,服务器发送单词“Password:”没有“:”,就像这个“密码”)。
    猜你喜欢
    • 2014-03-20
    • 1970-01-01
    • 2021-09-03
    • 2019-04-19
    • 2020-05-18
    • 1970-01-01
    • 2021-07-21
    • 2012-12-02
    • 2014-12-08
    相关资源
    最近更新 更多