Не удается подключиться к Redis через Jedis через ssh-туннель

У меня есть две машины: на машине foo (10.0.0.1) работает сервер Redis, а на машине bar (192.168.0.1) запущено java-приложение, подключающееся к foo через jedis. Все работает нормально, когда джедай получает адрес 10.0.0.1.

Но я не доверяю маршрутизаторам между foo и bar, а Redis не поддерживает ssl. Итак, я настроил ssh-туннель от bar до foo: user@bar$ ssh -N -f -L localhost:6379:localhost:6379 user@foo

Теперь из бара я могу успешно подключиться по телнету к redis на foo либо напрямую в 10.0.0.1, либо через туннель в 127.0.0.1. С джедаями, если я использую 127.0.0.1, я получаю исключение java.net.ConnectException: Connection refused, но джедаи могут успешно подключиться к 10.0.0.1.

Как я могу убедить джедаев использовать ssh-туннель?


person Jesusaur    schedule 25.02.2013    source источник
comment
Попробуйте заменить два экземпляра localhost в этой команде на соответствующие адреса и посмотрите, сработает ли это.   -  person Alan Krueger    schedule 26.02.2013
comment
Ради эксперимента я попытался изменить команду ssh на ssh -N -f -L *:6379:10.0.0.1:6379 user@foo. Похоже, это не имеет никакого значения, что неудивительно, поскольку я подтвердил, что ssh-туннель работает с telnet.   -  person Jesusaur    schedule 26.02.2013


Ответы (1)


Java-приложение, использующее jedis, представляет собой кластерное приложение, и я запутался в том, какая часть приложения запускала jedis. Как только я запустил ssh-туннель на главном хосте, а не на подчиненном, все заработало, как и ожидалось.

person Jesusaur    schedule 25.02.2013