如何通过Go中的ssh隧道连接到redis?
我想看看是否有可能在go中使用redis进行ssh隧道。我正在使用redigo图书馆 我通常通过命令行执行以下操作:如何通过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
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
}