我需要通过公共的database服务器对位于专用子网中的nat服务器进行SSH访问。只有nat有一个允许连接到database的RSA密钥。我要怎么用Net::SSH来实现呢?
我试过以下几种方法:
def ssh
Net::SSH.start(DB_SERVER_IP, DB_SERVER_USERNAME, proxy: proxy)
end
def proxy
Net::SSH::Proxy::Command.new("ssh -l #{NAT_USER} -e none #{NAT_IP} exec nc %h %p 2>/dev/null")
end这种方法确实使私有database服务器对localhost可见,但是localhost没有一个RSA密钥连接到它,并且连接失败
Permission denied (publickey). 发布于 2014-08-19 19:16:56
解决办法:
def ssh
Net::SSH.start(DB_SERVER_IP, DB_SERVER_USERNAME, proxy: proxy, key_data: [pem])
end
def proxy
Net::SSH::Proxy::Command.new("ssh -l #{NAT_USER} -e none #{NAT_IP} exec nc %h %p 2>/dev/null")
end
def pem
Net::SSH.start(NAT_IP, NAT_USER).exec!('cat ~/.ssh/the.pem')
endhttps://stackoverflow.com/questions/25390137
复制相似问题