前提・実現したいこと
ローカルのJavaアプリケーションから踏み台サーバ経由でクラウド環境のPostgreSQLデータベースを操作したいです。
Tera Termのポート転送機能を用いてアプリケーションから接続しようとしていましたが、
どのようにPostgreSQLの設定ファイルやTera Termの設定を変更し、アプリケーションでどのように接続先に設定すべきか、問題を整理できずに困っている状況です。
特にJavaスクリプト上で接続を投げる先(STEPサーバーの22ポート?リモートサーバーの5432ポート?)がわからず、困っています。
発生している問題・エラーメッセージ
finalException in thread "main" java.sql.SQLException: No suitable driver found for jdbc:MYNAME://MYNAME@STEP.hoge.hoge:22/MYNAME at java.sql.DriverManager.getConnection(DriverManager.java:689) at java.sql.DriverManager.getConnection(DriverManager.java:247) at _decode_cert.PostgresConnTest.main(PostgresConnTest.java:23)
該当のソースコード
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class PostgresConnTest { public static void main(String[] args) throws Exception { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { connection = DriverManager.getConnection("jdbc:MYNAME://MYNAME@STEP.hoge.hoge:5432/MYNAME", // "jdbc:postgresql://[場所(Domain)]:[ポート番号]/[DB名]" "postgres", // ログインロール "postgres"); // パスワード statement = connection.createStatement(); System.out.print("SUCCSESS"); } finally { System.out.print("final"); } } }
試したこと
- /.ssh/config の設定
Host STEP Hostname STEP.hoge.hoge User MYNAME Port 22 TCPKeepAlive yes IdentitiesOnly no
Host Azure Hostname Azure.hoge.hoge User MYNAME Port 22 IdentityFile ~/.ssh/id_rsa_azure TCPKeepAlive yes ProxyCommand C:\WINDOWS\System32\OpenSSH\ssh.exe -W %h:%p STEP
- TeraTerm SSHポート転送設定
ローカルのポート:5432 リッスン:5432
リモート側のホスト:Azure.hoge.hoge ポート:5432
- リモート環境
-- 踏み台サーバーの許可
-- /var/lib/pgsql/data/postgresql.conf
-- /var/lib/pgsql/data/pg_hba.conf
-- postgresqlデーモンの再起動
-- ファイアーウォールデーモンの停止
補足情報(FW/ツールのバージョンなど)
社内環境の都合上、踏み台サーバーにはpostgresqlをンストールできない、という状況です。
環境:
- ローカル:
-- Eclipse Version: Neon.3 Release (4.6.3)
-- JavaSE-1.8(Java8)
-- JDBCドライバー(postgresql-42.2.18.jar)
- リモートサーバー:
-- Azure Reserved Virtual Machine Instance
-- PostgreSQL 13.x
- 踏み台サーバー:
-- CentOS Linux release 7.x
-- Tera Term 4.x