我试图使用ruby连接到mongodb。但首先我需要连接到托管mongo的服务器。
有一个堡垒主机可以公开连接。数据库主机只能连接到到堡垒。
这是我的代码:
require 'net/ssh/gateway'
require 'mongo'
include Mongo
ops_host = '<PUBLIC IP/DNS>'
db_host = '<PRIVATE IP>'
port = '27017'
user = 'ubuntu'
key = File.read("<PATHTOKEY>")
gateway = Net::SSH::Gateway.new( ops_host, user, :key_data => key, :keys_only => TRUE)
gateway.ssh(db_host, user, :key_data => key, :keys_only => TRUE) do |ssh|
puts ssh.exec!("hostname")
client = MongoClient.new(db_host, port)
db = client.db('<DBNAME>')
coll = db.collection('profiles')
puts coll.find().count()
end
我能够连接到数据库主机,因为puts ssh.exec!("hostname")
命令返回正确的主机名,但我无法连接mongo,因为我一直收到Failed to connect to a master node
错误。