gpt4 book ai didi

golang ssh拨号超时

转载 作者:IT王子 更新时间:2023-10-29 02:24:52 32 4
gpt4 key购买 nike

在 ssh 连接上创建 DialTimeout 的最佳方法是什么?例如,这段代码总是返回“Ping deadline exceed”:

func (t *Tunnel) ping(sshConn *ssh.Client, addr string) (net.Conn, error) {
var (
conn net.Conn
err error
done chan int
)
go func() {
time.Sleep(getSeconds(10))
err = errors.New("Ping deadline exceed")
log.Printf("%v\nStatus: bad %s -> %s", err, t.serverAddr, addr)
t.writeStatus(bad)
done <- 1
close(done)
}()
go func() {
conn, err = sshConn.Dial("tcp", addr)
if err != nil {
t.writeStatus(bad)
log.Printf("%v\nStatus: bad %s -> %s", err, t.serverAddr, addr)
}
done <- 1
close(done)
}()
<-done
return conn, err
}

ssh.ClientConfig 中的 PS 超时设置为 5 秒

最佳答案

It's been two years but, may someone need the solution. So here it is.

在ssh.Dial中,你可以通过ssh.ClientConfig进行配置,

config := &ssh.ClientConfig { Timeout: time.Minute }
client, _ := ssh.Dial("tcp", t.ServerAddr, config)

您可以在 here 中找到更多信息:

// A Timeout of zero means no timeout. Timeout time.Duration

关于golang ssh拨号超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43116757/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com