我正在Ruby 1.9.3中使用bert-rpc gem来调用不在我的本地网络上的Ernie服务器:
BERTRPC::Service.new("www.someurl.com", 9998)
现在,我希望通过SSH保护该连接。我当时正在考虑使用本地unix套接字,但这意味着我需要打开bert-rpc gem代码并将TCPSocket调用替换为UnixSocket调用。有没有其他办法?
是否只能将localhost端口9998转发到www.someurl.com 9998,所以我可以这样做:
BERTRPC::Service.new("localhost", 9998)
我已经尝试过本地到远程的net / ssh示例,但是我无法真正将它们包裹住,也找不到任何好的文档。有人会告诉我如何进行端口转发的例子吗?
谢谢
最佳答案
解决这个问题的方法非常简单。创建一个SSH网关:
gateway = Net::SSH::Gateway.new('www.someurl.com', 'myuser', :password => "somepass")
gateway.open('www.someurl.com', 9998, 9998)
这会将localhost:9998路由到www.someurl.com:9998。这在Heroku上将不起作用,因为Heroku不允许绑定(bind)除已分配的$ PORT以外的其他端口。
有谁知道如何在/ tmp中使用Unix套接字在Heroku上实现此功能?