1 回答

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
我的理解是您需要打開與 postgre 數(shù)據(jù)庫的連接。我不知道是否存在本地 postgre ssh 隧道支持。所以,這個(gè)關(guān)于 SSH 隧道到 DB 機(jī)器的答案。
我沒有以這種方式測試過 postgre,但是我已經(jīng)在一些專有服務(wù)器連接中使用了這個(gè)模型。
過程是這樣的:
打開到數(shù)據(jù)庫機(jī)器的 ssh 連接
建立從本地端口到遠(yuǎn)程數(shù)據(jù)庫端口的隧道
在本地端口上打開數(shù)據(jù)庫連接
您可以使用 OpenSSH 或 putty 等 ssh 客戶端完成 #1 和 #2。你可能應(yīng)該這樣做 1st。如果外部客戶端正常工作,那么您可以嘗試將其全部放入 go 語言代碼中,而無需外部 SSH 客戶端。
在 go 你會使用
“golang.org/x/crypto/ssh”
包裹。
有關(guān)于如何使用 GO ssh 隧道的教程。以下不是未經(jīng)錯(cuò)誤檢查的測試樣本:
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)
上面的最后一行不是完全隧道,而是打開到數(shù)據(jù)庫服務(wù)器的 TCP 連接。您也許可以將該連接傳遞到 db 庫中。如果沒有,則必須設(shè)置隧道。
- 1 回答
- 0 關(guān)注
- 486 瀏覽
添加回答
舉報(bào)