Vous n'êtes pas identifié(e).

#1 10/01/2017 16:49:53

TJ85
Membre

Première connexion distante

Bonjour à tous,

Nouveau venu dans l'univers PostgreSQL, je découvre. J'étais habitué à RdB sous VMS, et bien sûr aux autres BDs courantes sur PC. Je trouve PostgreSQL remarquable, la doc également. MAIS : Je suis fichtrement infoutu de me connecter d'une machine sur une autre !
J'ai une installation standard OSX Server sur un MacMini. La version servie par Apple est 9.4, ses répertoires d'installation sont non-standard. L'adresse IP de cette machine est 10.0.1.65.
J'aimerais attaquer Postgres depuis un autre Mac, d'adresse 10.0.1.20, sur lequel j'ai construit de manière standard une version 9.6 complète (dans l'idée de développer des trucs, un peu pour jouer).
Des deux côtés Postgres fonctionne en local sans problème.

J'essaie tout d'abord ceci, depuis le client (10.0.1.20) :

$ /usr/local/pgsql/bin/psql -h 10.0.1.65 -d test -U postgres

et je reçois ce message :

psql: FATAL:  no pg_hba.conf entry for host "10.0.1.20", user "postgres", database "test", SSL off

Je ne comprends pas ce message. Je comprendrais qu'il me dise qu'il ne trouve pas de fichier pg_hba.conf à l'adresse 10.0.1.65, qui est ma cible et l'endroit où tourne le serveur que j'attaque, mais là il semble chercher le fichier en local...

Pour essayer de lui faire plaisir, sur la machine 10.0.1.20 (cliente), j'ai renseigné le fameux fichier ainsi :

host   all              all             10.0.0.0/8              trust

L'idée est de permettre à tout mon réseau (255 machines au maximum) d'attaquer le serveur.

Ca n'a rien changé.

Côté serveur j'utilise l'outil pgAdmin3. J'ai constaté que j'arrive à ouvrir un fichier pg_hba.conf en passant par Tools - Server Configuration, mais que lorsque je veux utiliser l'option File - Open pg_hba.conf, l'interface ne trouve pas le fichier.

J'ai modifié le contenu du fichier accessible pour qu'il soit identique à celui de l'autre machine, soit :
host   all              all             10.0.0.0/8              trust

Malgré tout, lorsque je tente la connexion depuis le client (10.0.1.20) j'ai toujours le même fichu message, que je ne comprends toujours pas :

psql: FATAL:  no pg_hba.conf entry for host "10.0.1.20", user "postgres", database "test", SSL off

Moilà ! Si quelqu'un passant par ici pouvait me décoincer, il aurait droit à ma reconnaissance durant un certain nombre de clicks !

Merci d'avance, bonne fin de journée

Thierry

Hors ligne

#2 10/01/2017 17:24:49

Marc Cousin
Membre

Re : Première connexion distante

Bonjour,

C'est un message envoyé par le serveur. C'est bien du contenu du pg_hba.conf du serveur dont il est question ici. Oubliez la configuration sur le client.

Avez vous bien fait un reload de la configuration après avoir modifié le pg_hab.conf ?


Marc.

Hors ligne

#3 10/01/2017 19:39:34

TJ85
Membre

Re : Première connexion distante

Oui, c'est au moins une chose dont je suis sûr. Par contre il y a à coup sûr un lézard dans ma configuration, car lorsque je démarre psql je me fais injurier car il ne trouve pas le serveur sur un socket /var/pgsql_socket/.s.PGSQL.5432.
Du coup, j'essaie de procéder à l'envers, du serveur officiel vers le client. Et j'obtiens un autre message d'erreur : "Connection refused". Ceci après avoir ouvert mon firewall sur le client, 10.0.1.20, qui du coup est devenu le serveur...

J'ai redémarré le serveur sur mon client (!), après avoir modifié pg_hba.conf ainsi :

host   all              all             0.0.0.0/0              trust

Si j'ai bien compris, je devrais ainsi accepter toutes les connexions, sans restrictions ni password. Rien ne change pourtant : "Connection refused". Je note que lorsque je tente une connexion à distance avec postgres démarré en interactif, je ne logue aucun message d'erreur alors que lorsque je me connecte avec un nom d'utilisateur Postgres inconnu je vois bien une trace sur la console.

Donc, c'est pas encore ça... Mais diantre, que c'est donc compliqué !

Hors ligne

#4 10/01/2017 20:30:07

Marc Cousin
Membre

Re : Première connexion distante

Connection refused, c'est probablement que vous avez listen_addresses qui est toujours à localhost (postgres n'écoute dans ce cas qu'en local). Modifiez le paramètre à * dans le fichier de configuration.

Pour ce qui est d'être compliqué, oui, par défaut, postgres est plutôt «fermé» par défaut, pour des raisons de sécurité.

Sinon, pour se mettre le pied à l'étrier: http://postgresql.fr/guidedemarragerapide


Marc.

Hors ligne

#5 11/01/2017 00:11:25

TJ85
Membre

Re : Première connexion distante

Grand merci pour le lien, je pense que je vais pouvoir m'en tirer en lisant cette doc. Elle m'avait échappé jusqu'ici. Dans le cas contraire, je referai un tour par ici !

Bonne soirée,

Thierry

Hors ligne

#6 11/01/2017 18:08:24

dverite
Membre

Re : Première connexion distante

Par contre il y a à coup sûr un lézard dans ma configuration, car lorsque je démarre psql je me fais injurier car il ne trouve pas le serveur sur un socket /var/pgsql_socket/.s.PGSQL.5432


C'est normal parce que quand on lance psql sans argument de host (-h) par défaut il prend celui avec lequel sa lib a été compilée, et dans le cas du psql compilé/pré-installé par Apple c'est le répertoire pour Unix Domain Socket se trouvant dans /var/pgsql_socket (pour une connexion locale, donc).

Il faut s'assurer d'utiliser -h et dans le cas présent d'un psql compilé par vos soins, s'assurer de lancer celui-là et non celui pré-installé dans /usr/bin.

Les versions plus de MacOS version desktop ont un client PostgreSQL pré-installé, mais pas les plus récentes (depuis au moins 2 ans je crois).


Sinon le problème de départ, comme répondu par Marc est que les règles pour pour autoriser les clients via pg_hba.conf se font sur le serveur, pas sur le client, sinon n'importe quel client pourrait s'auto-autoriser, ça n'apporterait aucune sécurité.

Hors ligne

#7 11/01/2017 21:34:05

TJ85
Membre

Re : Première connexion distante

Bon,

La doc a été salvatrice, maintenant le serveur sert et le client cliente et moi, je suis bien content !
Je relève toutefois que le message d'erreur que je recevais,

                        "psql: FATAL:  no pg_hba.conf entry for host "10.0.1.20", user "postgres", database "test", SSL off"

est quelque part buggué, car il mentionne bien l'adresse de la machine depuis laquelle je tentais la connexion, et non celle du serveur (qui est en 10.0.1.65). Ca ne contribue pas à la clarté du débat. Et je note bien l'histoire du socket, encore un truc qui ne me venait pas tout seul...

La prochaine étape est de nettoyer mon MacMini de l'installation 9.4 Apple actuelle et d'y installer un beau build 9.6 tout propre, installé conformément aux canons ...nix. Il n'y a pas de raison de faire autrement. D'autant plus que la doc de build du site Français est parfaite et fonctionne right out of the box, elle ! La seule chose que je dois faire si je comprends bien est de récupérer le fichier launchd et de l'adapter à mes souhaits. Je suis optimiste...

En tout cas merci à vous deux, il est agréable de ne pas se sentir tout seul en ces tragiques circonstances ;-)

Thierry

Hors ligne

Pied de page des forums