0
我試圖看看是否有可能在redis中使用ssh隧道。我正在使用redigo庫。如何通過Go中的ssh隧道連接到redis?
通過命令行我通常做類似:
ssh [email protected] -p port
然後Redis的-CLI -h redisHost
我試圖看看是否有可能在redis中使用ssh隧道。我正在使用redigo庫。如何通過Go中的ssh隧道連接到redis?
通過命令行我通常做類似:
ssh [email protected] -p port
然後Redis的-CLI -h redisHost
使用network dial功能像這樣與Redigo:
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
}
如果該應用程序會創建到服務器的多個連接,然後創建client
每次撥號一次並重復使用。
上面的代碼是未編譯的,未經測試。
完美,這是我需要得到它的工作! – user2439604