68

RazorSQL を使用して、リモート サーバーで実行されているデータベースに接続したいと考えています。次のコマンドを使用して、localhost に SSH トンネルを作成します。

ssh -L 1111:remote.server.com:5432 myuser@remote.server.com

localhostホストとポートを指定して、RazorSQL の GUI 経由で接続を構成1111します。[接続] をクリックすると、次のエラー メッセージが表示されます。

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

aaa.bbb.ccc.dddリモート サーバーの IP アドレスです。

さらに、pg_hba.confファイルの内容を変更することはできません。現時点ではこんな感じです。

# 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@

現在のセットアップを使用して、サーバーの構成を変更せずに、SSH トンネル経由でデータベース サーバーに接続することは可能ですか?

4

1 に答える 1

117

pg_hba.conf は、localhost からの接続を許可しているようです。SSH トンネル接続を localhost から表示させる最も簡単な方法は、それらlocalhost にすることです。

次の SSH コマンドは、ユーザー "user" として remote.example.com に接続し、ssh クライアントが localhost のポート 1111/tcp をリッスンするようにします。そのポートへの接続はすべて ssh トンネル経由で転送され、ssh サーバー側では、接続は localhost のポート 5432/tcp に対して行われます。localhost に接続しているので、接続は localhost からのものでもあるように見え、既存の pg_hba.conf 行と一致するはずです。

ssh -L 1111:localhost:5432 user@remote.example.com

これが長時間実行されるトンネルであることが予想される場合は、autosshを使用することをお勧めします

ssh クライアントを実行しているホストで psql クライアントを使用して接続するには、次のようにします。

psql -h localhost -p 1111 -U your-db-username database-name

次に、データベース ユーザーのパスワードを求めるプロンプトが表示されます。

.pgpassまたは、 psql を実行しているクライアントのホーム ディレクトリにあるファイルに、次の行を追加することもできます。

localhost:1111:database-name:your-db-user:your-db-password
于 2013-05-30T14:02:09.357 に答える