我正在尝试从Windows应用程序连接到Unix服务器,以运行一些命令(自动检查服务器状态)。我正在使用ssh.net库,并使用以下代码连接到服务器:
using (SshClient ssh = new SshClient("myserver.univ.edu", "myusername", "My!maginaryPa55wrd"))
{
ssh.Connect();
var result = ssh.RunCommand("df -h");
LogText.Text = result.Result; // puts result of command into multiline textbox
ssh.Disconnect();
}
但是当我运行它时,它在连接上超时。我猜这是因为服务器需要两因素身份验证。当我使用Putty登录时,它会提示输入用户名和密码,然后提示您选择各种因素... enter a passcode or "1" for Duo push to xxx-xxx-1212 or "2" for phone call to xxx-xxx-1212
。
SSH.net库表示它支持两因素身份验证,但是我到处都在寻找实现它的方法,而我却空无一人。关于如何解决此问题的任何线索,我将不胜感激。
答案 0 :(得分:0)
问题是您没有两要素身份验证,只有一个要素和一堆交互选项,这是非标准的,并且ssh.net不支持。没必要做出选择。
要执行此操作,您需要修改ssh.Net代码,或者更好的方法是,使用远程服务器设置“公共密钥身份验证”,在这种情况下,它不需要密码或2FA。
几乎任何规模合理的组织都可以确定PKI设置。您需要咨询管理员,然后查看有关将公钥添加到要检查的服务器上的信息。
ssh.Net支持公钥身份验证,可以消除您遇到的所有问题。