golang ssh拨号超时
在ssh连接上创建拨号超时的最佳方法是什么?例如,此代码始终返回“Ping deadline Over”: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
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)创建
抱歉,我最初误解了您的问题。无法为sshdirect tcpip
命令提供超时,但远程主机最终应该能够超时,尽管可能不会在10秒内超时(取决于远程主机的内核TCP设置)。direct tcpip不支持截止日期。
config := &ssh.ClientConfig { Timeout: time.Minute }
client, _ := ssh.Dial("tcp", t.ServerAddr, config)