如何通过Go中的ssh隧道连接到redis?

如何通过Go中的ssh隧道连接到redis?,go,ssh,redis,Go,Ssh,Redis,我想看看是否有可能在go中使用redis进行ssh隧道。我正在使用redigo图书馆 我通常通过命令行执行以下操作: sshuser@host-p端口 然后,redis cli-h redisHost将这样的功能用于: 如果应用程序创建了到服务器的多个连接,则创建一次客户端,并在每个拨号上重复使用 以上代码未编译且未经测试 func dial(network, addr string) (net.Conn, error) { user := "user" pa

我想看看是否有可能在go中使用redis进行ssh隧道。我正在使用redigo图书馆

我通常通过命令行执行以下操作:


sshuser@host-p端口

然后,redis cli-h redisHost将这样的功能用于:

如果应用程序创建了到服务器的多个连接,则创建一次
客户端
,并在每个拨号上重复使用

以上代码未编译且未经测试

func dial(network, addr string) (net.Conn, error) {
        user := "user"
        password := "password"
        sshAddr := "example.com:22"
        redisAddr := ":6379"
        config := &ssh.ClientConfig{
            User: user,
            Auth: []ssh.AuthMethod{
                ssh.Password(passord),
            },
        }
        netConn, err := net.Dial("tcp", sshAddr)
        if err != nil {
            return nil, err
        }
        clientConn, chans, reqs, err := ssh.NewClientConn(netConn, sshAddr, config)
        if err != nil {
            netConn.Close()
            return nil, err
        }
        client := ssh.NewClient(clientConn, chans, reqs)
        conn, err := client.Dial("tcp", redisAddr)
        if err != nil {
            client.Close()
            return nil, err
        }
        conn, nil
}