I have a PostgreSQL DB on a remote VPS server (CentOS 5) and I’d like to connect to have a Rails application connect to it from my local Mac laptop. On my laptop, I have the ActiveRecord PostgreSQL adapter installed — postgres (0.7.9.2008.01.28).
I read in the PostgreSQL docs:
The password-based authentication methods are md5, crypt, and password. These methods operate similarly except for the way that the password is sent across the connection: respectively, MD5-hashed, crypt-encrypted, and clear-text.
[…]
If you are at all concerned about password ‘sniffing’ attacks then md5 is preferred…Plain password should be avoided especially for connections over the open Internet (unless you use SSL, SSH, or another communications security wrapper around the connection).
In a standard Rails database.yml would have something like this for a localhost connection…
development: adapter: postgresql database: journalapp_development username: xxx password: yyy host: localhost
But there’s nothing in there about the authentication method discussed in the PostgreSQL docs. Is there as option to have something like ‘auth_method: md5‘?
Regardless of whether Postgres allows this functionality, you can enable a secure connection to a remote database by using SSH tunneling. Here’s the gratuitous Stack Overflow paste-in from the Web docs:
In case you want more, you can find it online by searching for ‘SSL tunnel’ or ‘postgres SSL tunnel’. Here’s the Postgres site where I got the above:
http://www.postgresql.org/docs/current/static/ssh-tunnels.html
To summarize for Rails, you would then do the following:
1) In a terminal window, run the first ssh command above to establish the tunnel.
2) Set your database props like so: