Je voudrais utiliser RazorSQL pour me connecter à ma base de données qui s'exécute sur un serveur distant. Je crée un tunnel SSH sur mon hôte local avec la commande suivante:
ssh -L 1111:remote.server.com:5432 [email protected]
Je configure ma connexion via l'interface graphique de RazorSQL, en spécifiant localhost
comme hôte et 1111
comme port. Lorsque je clique sur "Connect", le message d'erreur suivant apparaît:
ERROR: An error occurred while trying to make a connection to
the database:
JDBC URL: jdbc:postgresql://localhost:1111/myuser
FATAL:
no pg_hba.conf entry for Host "aaa.bbb.ccc.ddd",
user "myuser", database "mydatabase", SSL off
où aaa.bbb.ccc.ddd
est l'adresse IP d'un serveur distant.
De plus, je ne suis pas autorisé à modifier le contenu de mon pg_hba.conf
fichier. Voilà à quoi ça ressemble en ce moment:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
@remove-line-for-nolocal@# "local" is for Unix domain socket connections only
@remove-line-for-nolocal@local all all @authmethod@
# IPv4 local connections:
Host all all 127.0.0.1/32 @authmethod@
# IPv6 local connections:
Host all all ::1/128 @authmethod@
Est-il possible de se connecter au serveur de base de données via le tunnel SSH en utilisant ma configuration actuelle et sans modifier la configuration du serveur?
Votre pg_hba.conf semble autoriser les connexions depuis localhost. Le moyen le plus simple de faire apparaître vos connexions de tunnel SSH à partir de localhost est de les rendre en localhost.
La commande SSH suivante se connecte à remote.example.com en tant qu'utilisateur "utilisateur" et fait écouter votre client ssh sur localhost, port 1111/tcp. Toutes les connexions établies à ce port seront transmises via le tunnel ssh, et du côté serveur ssh, les connexions seront établies avec localhost, port 5432/tcp. Puisque nous nous connectons à localhost, les connexions sembleront provenir également de localhost et devraient correspondre à votre ligne pg_hba.conf existante.
ssh -L 1111:localhost:5432 [email protected]
Si cela devrait être un tunnel de longue durée, je recommanderais d'utiliser autossh
Pour vous connecter à l'aide du client psql sur l'hôte sur lequel vous exécutez le client ssh, utilisez quelque chose comme ceci:
psql -h localhost -p 1111 -U your-db-username database-name
Vous devez ensuite être invité à saisir le mot de passe de votre utilisateur de base de données.
Vous pouvez également ajouter une ligne ligne comme suit à un fichier appelé .pgpass
dans votre répertoire personnel sur le client sur lequel vous exécutez psql:
localhost:1111:database-name:your-db-user:your-db-password