我正在尝试使用 SSH 连接golang.org/x/crypto/ssh,我有点惊讶我似乎无法找到如何使NewSession函数超时(我实际上没有看到任何超时方法)。当我尝试连接到有问题的服务器时,它会挂起很长时间。我写了一些select与 a一起使用的东西,time.After但感觉就像一个黑客。我还没有尝试过的是将底层保留net.Conn在我的结构中并继续进行Conn.SetDeadline()调用。还没有尝试过这个,因为我不知道 crypto/ssh 库是否覆盖了这个或类似的东西。任何人都有使用此库使死服务器超时的好方法?或者有人知道更好的图书馆吗?
2 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
在 上设置超时ssh.ClientConfig。
cfg := ssh.ClientConfig{
User: "root",
Auth: []ssh.AuthMethod{
ssh.PublicKeys(signer),
},
HostKeyCallback: ssh.FixedHostKey(hostKey),
Timeout: 15 * time.Second, // max time to establish connection
}
ssh.Dial("tcp", ip+":22", &cfg)
当您调用时ssh.Dial,超时将传递给net.DialTimeout.
- 2 回答
- 0 关注
- 176 浏览
添加回答
举报
0/150
提交
取消