0

我正在使用 Renci.SshNet (RuntimeVersion: 2.0.50727) 连接启用 ssh 的 linux 机器,它对于网络中可用的主机正常工作,但是每当我尝试连接到不在网络中的任何主机时似乎卡在了线上SshClient.Connect()

我正在考虑一种解决方法,例如在连接设备之前 ping 设备,但不确定它有多可靠。

4

1 回答 1

1

ConnectionInfo有一个Timeout可以设置的属性。它默认为 30 秒,因此我建议将其降低到您的环境可以容忍的时间,例如 5 秒。

如果您使用主机名进行连接,您还可以选择使用Dns.GetHostEntry().

var entries = Dns.GetHostEntry(host);
if( entries.AddressList.Length > 0 )
{
    //Optionally do some checking with AddressFamily if you have v4/v6 issues
    var ip = entries.AddressList[0];
}

如果你想制作一个“pinger”,你可以TcpClient尝试绑定到主机和端口,但因为这基本上就是它SshClient正在做的事情,我认为这将是矫枉过正。

于 2016-01-06T14:35:37.513 回答