Туннель ssh - это жизнеспособная, хотя иногда и хитрая мера для защиты службы.
Хитрость в том, что туннель может рухнуть, и у вас мало что можно сделать, когда это произойдет, поскольку туннель созданза пределами вашего приложения.
Однако для MongoDB это также сопровождается довольно неприятными побочными эффектами: вам нужно много поиграться с настройками и DNS, чтобы настроить и запустить реплику, не говоря уже о шардинге.
Было бы лучше, если бы вы включили аутентификацию (это не так сложно) и TLS, а также надлежащие меры безопасности и , а затем привязали ваш сервер MongoDB либо к 0.0. 0.0 или IP-адрес, который вы используете для подключения к машине.
Примечание: убедитесь, что у вас установлен блокатор грубой силы, такой как fail2ban или denyhosts , сконфигурированный для защиты MongoDB и протестированный , если вы это сделаете.
Если сумма вышеупомянутого кажется слишком сложной, вы должныДумайте ОЧЕНЬ полностью о том, не стоит ли вам использовать размещенный сервис MongoDB, например, MongoDB Inc Atlas или mLab .
Тем не менее, вот как вы можете это сделать:
$ ssh user@linuxhost -N -f -L 27017:127.0.0.1:27017
Password:
Введите пароль. Процесс перейдет в фоновый режим, и вы можете проверить, работает ли он по-прежнему через
$ ps ax | grep ssh
. Это открывает туннель ssh для удаленного хоста, открывая порт 27017 (первый порт на машине, на которой вы запускаетеи включите туннелирование через ssh-соединения к 127.0.0.1 (локальный адрес удаленного хоста) на порту 27017.
Теперь вы можете просто установить &mgo.DialInfo{Addrs:[]string{"127.0.0.1:27017"}}
Примечание
В случае, если к настоящему моменту неясно: я настоятельно (!!!) совет против использования туннеля ssh. делает создание репликации довольно сложным и практически исключает использование шардинга. Узнайте, как правильно управлять MongoDB. Университет MongoDB предлагает бесплатные курсы, и они чертовски хороши.
Вы. Были. Предупреждены.