1 回答
TA贡献1783条经验 获得超5个赞
我的理解是您需要打开与 postgre 数据库的连接。我不知道是否存在本地 postgre ssh 隧道支持。所以,这个关于 SSH 隧道到 DB 机器的答案。
我没有以这种方式测试过 postgre,但是我已经在一些专有服务器连接中使用了这个模型。
过程是这样的:
打开到数据库机器的 ssh 连接
建立从本地端口到远程数据库端口的隧道
在本地端口上打开数据库连接
您可以使用 OpenSSH 或 putty 等 ssh 客户端完成 #1 和 #2。你可能应该这样做 1st。如果外部客户端正常工作,那么您可以尝试将其全部放入 go 语言代码中,而无需外部 SSH 客户端。
在 go 你会使用
“golang.org/x/crypto/ssh”
包裹。
有关于如何使用 GO ssh 隧道的教程。以下不是未经错误检查的测试样本:
var buffer []byte
var err error
buffer, err = ioutil.ReadFile(sshKeyFile)
var key ssh.Signer
key, err = ssh.ParsePrivateKey(buffer)
var authMethod ssh.AuthMethod
authMethod = ssh.PublicKeys(key)
sshConfig = &ssh.ClientConfig{
User: "user_id",
Auth: []ssh.AuthMethod{authMethod},
}
conn, err := ssh.Dial("tcp", endpoint, sshConfig)
// open connection on postgre:
dbConn, err = conn.Dial("tcp", dbEndpoint)
上面的最后一行不是完全隧道,而是打开到数据库服务器的 TCP 连接。您也许可以将该连接传递到 db 库中。如果没有,则必须设置隧道。
- 1 回答
- 0 关注
- 537 浏览
添加回答
举报
