登錄 Linux 盒子后,無需身份驗證即可連接 MongoDB。如何從 Go 代碼連接到這樣的 MongoDB 實例?我需要使用用戶名和密碼通過 SSH 連接到 Linux 盒子,然后連接到 MongoDB。嘗試了下面的代碼,但它拋出:“無法訪問的服務器”從命令提示符處,我可以 ping Linux 機器的 IP 地址,并且我的 IDE 也可以連接到互聯網。 mongoDBDialInfo := &mgo.DialInfo{ Addrs: []string{"<LINUX_IP_ADDRESS>"}, Timeout: 60 * time.Second, Database: "<MONGODB_DATABASE_NAME>", Username: "<LINUX_USERNAME>", Password: "<LINUX_PASSWORD>", } mongoSession, err := mgo.DialWithInfo(mongoDBDialInfo) if err != nil { log.Fatalf("CreateSession: %s\n", err) }
1 回答

慕勒3428872
TA貢獻1848條經驗 獲得超6個贊
ssh 隧道是一種可行的保護服務的措施,盡管有時很棘手。
棘手的部分是隧道可能會崩潰,而發生這種情況時您無能為力,因為隧道是在應用程序外部創建的。
然而,對于 MongoDB 來說,它還帶來了一些相當討厭的副作用:您需要對設置和 DNS 進行大量修改才能設置和運行副本,更不用說分片了。
如果您啟用身份驗證(這并不難)和 TLS 以及適當的安全措施,然后將您的 MongoDB 服務器綁定到 0.0.0.0 或您用于連接到機器的 IP 地址,那就更好了。
旁注:確保您安裝了諸如fail2ban或denyhosts之類的強力攔截器,配置為保護MongoDB并測試是否這樣做。
如果上述總和看起來太復雜,您應該非常徹底地考慮是否不應該使用托管 MongoDB 服務,例如MongoDB Inc 的 Atlas或mLab。
不過,您可以按照以下方法進行操作:
$?ssh?user@linuxhost?-N?-f?-L?27017:127.0.0.1:27017 Password:
輸入密碼。該進程將進入后臺,您可以通過以下方式檢查它是否仍在運行
$?ps?ax?|?grep?ssh
這將打開到遠程主機的 ssh 隧道,打開端口 27017(運行命令的計算機上的第一個端口),并通過 ssh 連接將其隧道連接到端口 27017 上的 127.0.0.1(遠程主機的本地主機地址) 。
現在,您只需設置&mgo.DialInfo{Addrs:[]string{"127.0.0.1:27017"}}
- 1 回答
- 0 關注
- 180 瀏覽
添加回答
舉報
0/150
提交
取消