golang ssh拨号超时

golang ssh拨号超时,go,ssh,Go,Ssh,在ssh连接上创建拨号超时的最佳方法是什么?例如,此代码始终返回“Ping deadline Over”: func(t*Tunnel)ping(sshConn*ssh.Client,addr字符串)(net.Conn,错误){ 变量( 康涅狄格州 错误 成龙国际酒店 ) go func(){ 时间。睡眠(获得秒(10)) err=错误。新建(“Ping截止日期超过”) log.Printf(“%v\n状态:错误的%s->%s”,err,t.serverAddr,addr) t、 writeSt

在ssh连接上创建拨号超时的最佳方法是什么?例如,此代码始终返回“Ping deadline Over”:

func(t*Tunnel)ping(sshConn*ssh.Client,addr字符串)(net.Conn,错误){
变量(
康涅狄格州
错误
成龙国际酒店
)
go func(){
时间。睡眠(获得秒(10))
err=错误。新建(“Ping截止日期超过”)
log.Printf(“%v\n状态:错误的%s->%s”,err,t.serverAddr,addr)
t、 writeStatus(坏)

完成而不是使用sshConn。拨号查看:

func DialTimeout(network, address string, timeout time.Duration) (Conn, error)
从:

DialTimeout与Dial类似,但需要超时。超时包括 名称解析(如果需要)

已经两年了,但是,也许有人需要解决方案。就这样

在ssh.Dial中,您可以通过ssh.ClientConfig提供配置

config := &ssh.ClientConfig { Timeout: time.Minute }
client, _ := ssh.Dial("tcp", t.ServerAddr, config)
您可以在以下网站中找到更多信息:

//超时为零表示没有超时。 超时时间。持续时间


我在ssh.ClientConfig中设置了超时,但是当ssh服务器关闭时,我仍然有无限的延迟。但是,我发现了一个错误,
done chan int
需要通过
make(chan int)创建
抱歉,我最初误解了您的问题。无法为ssh
direct tcpip
命令提供超时,但远程主机最终应该能够超时,尽管可能不会在10秒内超时(取决于远程主机的内核TCP设置)。direct tcpip不支持截止日期。
config := &ssh.ClientConfig { Timeout: time.Minute }
client, _ := ssh.Dial("tcp", t.ServerAddr, config)