修复: 连接地址拼接兼容IPv6主机

JoinHostPort替换fmt拼接,IPv6裸地址缺方括号导致拨号失败
This commit is contained in:
lxy
2026-10-03 10:18:31 +08:00
parent c7978a5bfd
commit 066ac2b339
+3 -1
View File
@@ -4,6 +4,7 @@ import (
"fmt"
"net"
"os"
"strconv"
"sync"
"time"
@@ -157,7 +158,8 @@ func buildClient(config *Config) (*Client, error) {
return nil, &ConnectionError{Op: "auth", Err: fmt.Errorf("必须提供密码或密钥文件")}
}
addr := fmt.Sprintf("%s:%d", config.Host, config.Port)
// JoinHostPort 保证 IPv6 主机地址被方括号包裹,fmt 拼接对 IPv6 产生非法地址
addr := net.JoinHostPort(config.Host, strconv.Itoa(config.Port))
// 拨号与认证、SFTP 子系统握手共享同一总超时预算,认证阶段无界挂起由 deadline 掐断
deadline := time.Now().Add(connectTimeout)
sshConn, err := net.DialTimeout("tcp", addr, connectTimeout)