如何使用Net :: SSH在SSH会话中打开SSH会话?

时间:2014-08-19 18:07:50

标签: ruby ssh tunnel

我需要通过公共database服务器通过SSH连接到位于私有子网中的nat服务器。只有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). 

1 个答案:

答案 0 :(得分:0)

解决方法:

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')
end