无法使用RenciSSH连接到Mac

时间:2016-08-22 04:51:41

标签: c# macos ssh

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

  

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

这是我的代码。请帮忙

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

1 个答案:

答案 0 :(得分:3)

根据对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;
            }
        }
    }