Безопасное соединение SSH с помощью bert-rpc в Ruby

Я использую гем bert-rpc в Ruby 1.9.3, чтобы совершать звонки на сервер Эрни, который не находится в моей локальной сети:

BERTRPC::Service.new("www.someurl.com", 9998)

Теперь я хочу, чтобы это соединение было защищено через SSH. Я думал об использовании локального сокета Unix, но это означает, что мне нужно открыть код гема bert-rpc и заменить вызовы TCPSocket на вызовы UnixSocket. Разве нет другого пути?

Разве нельзя просто перенаправить локальный порт 9998 на www.someurl.com 9998, чтобы я мог сделать это:

BERTRPC::Service.new("localhost", 9998)

Я пробовал локально-удаленные примеры net/ssh, но я не могу их обернуть, и не могу найти хорошую документацию. Кто-нибудь был бы так любезен, чтобы показать мне пример того, как сделать переадресацию портов?

Спасибо

1 ответ

Решение

Решение этого было довольно простым. Создайте шлюз 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.

У кого-нибудь есть идея, как заставить это работать на Heroku с сокетом Unix в /tmp?

Другие вопросы по тегам