2017-01-07 5 views
1

У меня есть бродячий ящик, установленный с сервером Postgres на нем работает на порту 5432, и я добавил это к Vagrantfile:Vagrant - Как получить доступ к гостям сервер Postgres от хоста

config.vm.network "private_network", ip: "192.168.33.33" 
    config.vm.network "forwarded_port", guest: 5432, host: 3333 

Но когда я пытаюсь подключиться к серверу Postgres путем подключения к 192.168.33.33:3333

Я получаю эту ошибку:

enter image description here

Соединение отклонено, это та же ошибка, которую я получу, если попытаюсь подключиться к любым портам, которые не открыты. Я запустил сканер портов на 192.168.33.33 и не видел открытых портов. Это на самом деле то, что я имею в Vagrantfile:

config.vm.network "forwarded_port", guest: 8000, host: 8001 
    config.vm.network "forwarded_port", guest: 3333, host: 3334 
    config.vm.network "forwarded_port", guest: 5555, host: 5556 
    config.vm.network "forwarded_port", guest: 5432, host: 3333 

    config.vm.network "forwarded_port", guest: 80, host: 8888, 
    auto_correct: true 

и Heres результаты от порта сканера:

enter image description here

Он не обнаружил каких-либо портов выше 995. Как получить доступ к Сервер postgres VMs?

UPDATE: Я нашел способ подключения через локальную (Charlies внушение), кажется, что config.vm.network "forwarded_port" только вперед порты localhost. Кроме того, я после этого руководства: https://pseudoscripter.wordpress.com/2016/04/26/allow-remote-hosts-to-connect-to-postgresql-database-server-on-vagrant-box/

и редактируются postgresql.conf так, чтобы он прослушивает все IP-адреса, добавив следующую строку:

listen_addresses = '*'   # what IP address(es) to listen on; 

и редактируются pg_hba.conf разрешить гостям IP-адрес:

host all    all    192.168.33.33/24  md5 

^^ Этот шаг, вероятно, не имеет никакого отношения к тому, почему он работает на localhost:3333. Шаги из этого руководства не работали, подключаясь по 192.168.33.33:3333, но я могу подключиться по адресу localhost:3333.

решаемых Вместо того, чтобы получить доступ к серверу на гостевом IP через пересылаемые порты, можно получить доступ к порту гостей, так что я могу получить доступ к серверу на 192.168.33.33:5432 в настоящее время. Это не сработало для меня, когда я впервые попытался, поэтому шаги в UPDATE 1 должны были сделать его доступным.

+0

AFAIK, Vagrant свяжет переадресованные порты в 'localhost', поэтому вы должны подключиться к' localhost: 3333' – charli

+0

Да, вы правы, это сработало. Раньше это не сработало, но я изменил несколько вещей, поэтому я обновляю оригинальный пост. Было бы неплохо иметь возможность использовать IP гостевой машины. Должен быть способ сделать это, но делать это так же все равно. Благодарю. –

ответ

1

Снова повторив ваш вопрос, я заметил конфигурацию private_network. Это делает ваш гостевой компьютер имеет этот IP-адрес, поэтому вы должны быть способны подключиться к 192.168.33.33: . PostgreSQL прослушивает 5432 в виртуальной машине. Осторожно, ваш хост должен находиться в одной сети, чтобы быть доступным. Если нет, вам нужно будет добавить статические маршруты между вашим хостом и виртуальной машиной.

Опция forwarded_port будет отображать порт на хосте с портом вашего гостя, так

config.vm.network "forwarded_port", guest: 5432, host: 3333 

сопоставляются localhost:3333 (или any IP you have in your host) в 192.168.33.33:5432.

О конфигурации pg_hba.conf предотвращает несанкционированный доступ, но вы можете подключиться к серверу, поэтому сообщение об ошибке будет отличаться.

+0

Вы правы, это работает на 192.168.33.33:5432. –

Смежные вопросы