PostgreSQL via le Tunnel SSH
J'aimerais utiliser RazorSQL pour me connecter à ma base de données qui fonctionne sur un serveur distant. J'ai créer un tunnel SSH sur mon localhost avec la commande suivante:
ssh -L 1111:remote.server.com:5432 myuser@remote.server.com
je configure ma connexion via L'interface graphique de RazorSQL, en spécifiant localhost
comme l'hôte et 1111
comme le port. Lorsque je clique sur "Se Connecter", 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.
qui plus est, Je ne suis pas autorisé à changer le contenu de mon pg_hba.conf
fichier. C'est à ça que ç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?
1 réponses
Votre pg_hba.conf semble autoriser les connexions depuis localhost. La manière la plus simple de faire apparaître vos connexions tunnel SSH à partir de localhost est de les rendre localhost.
la commande SSH suivante se connecte à remote.example.com comme utilisateur "user", et fait écouter votre client ssh sur localhost, port 1111/tcp. Toute connexion faite à ce port sera transmise par le tunnel ssh, et du côté du serveur SSH, les connexions seront faites à localhost, port 5432 / tcp. Puisque nous nous connectons à localhost, les connexions apparaîtront également à partir de localhost, et devraient correspondre à votre pg_hba existant.conf la ligne.
ssh -L 1111:localhost:5432 user@remote.example.com
Si c'est censé être un long tunnel, je vous conseille d'utiliser autosh
pour vous connecter en utilisant le client psql sur l'hôte où vous exécutez le client ssh, utilisez quelque chose comme ceci:
psql -h localhost -p 1111 -U your-db-username database-name
vous devriez alors être invité pour l'utilisateur de votre base de données le mot de passe.
alternativement, vous pouvez ajouter une ligne suivante à un fichier appelé .pgpass
dans votre répertoire personnel sur le client où vous lancez psql:
localhost:1111:database-name:your-db-user:your-db-password