1

我正在使用 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 示例,但我无法真正理解它们,也找不到任何好的文档。有人可以向我展示如何进行端口转发的示例吗?

谢谢

4

1 回答 1

2

解决方案非常简单。创建 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 不允许绑定到分配的 $PORT 以外的其他端口。

有没有人知道如何在 /tmp 中使用 Unix 套接字在 Heroku 上进行这项工作?

于 2012-03-11T14:21:00.923 回答