この記事では、Visual Studio Code用 PostgreSQL 拡張機能の高度な接続機能について説明します。 既存の接続文字列を再利用する必要がある場合、より厳密な TLS 検証用の証明書ファイルを指定する場合、または SSH トンネルを使用して要塞ホスト経由で接続する必要がある場合は、これらのオプションを使用します。
Tip
標準認証、SSL モードの選択、サーバー グループ、保存された接続については、「 接続と ID」を参照してください。
接続文字列入力モードを使用する
既存の 接続 定義を貼り付けるには、接続ダイアログの [接続文字列] タブ ([ 接続方法: ] の下) を選択します。 拡張機能は文字列を自動的に解析し、接続フィールドを設定します。
このページでは、次の 2 列のレイアウトが使用されます。
- 左側の列: 文字列 を貼り付ける接続文字列というラベルが付いたテキスト領域。 テキスト領域の下のヒントには、「接続文字列からパスワードを省略してください」と表示されます。
- 右側の列: 解析されたサーバー名、ユーザー名、およびデータベース名の値が抽出されると表示される読み取り専用の [接続の詳細] パネル。
入力または貼り付けに応じて、解析がリアルタイムで行われます。 パーサーが不足しているサーバーまたはユーザー値を検出すると、テキスト領域の上に検証エラーが表示されます。
サポートされるフォーマット
この拡張機能は、次の 9 つの接続文字列形式を認識します。
| フォーマット | プレフィックスまたはトリガー | Example |
|---|---|---|
| PostgreSQL URI |
postgres:// または postgresql:// |
postgresql://user:password@host:5432/dbname?sslmode=require |
| JDBC | jdbc:postgresql:// |
jdbc:postgresql://host:5432/dbname |
| セミコロン区切り (key=value) | 含む ; |
host=localhost;port=5432;dbname=mydb;user=postgres;password=secret |
psql コマンドライン |
psql |
psql -h host -p 5432 -U user -d dbname |
| 環境変数のエクスポート | export |
export PGHOST=localhost に続いて PGPORT、PGUSER、PGDATABASE、PGPASSWORD |
| Node.js | new Client |
new Client({ host: "localhost", port: 5432, user: "postgres", database: "mydb" }) |
| Python (psycopg2) | psycopg2.connect |
psycopg2.connect(user="postgres", password="<your-password>", host="localhost", port=5432, database="mydb") |
| PHP | pg_connect |
pg_connect("host=localhost port=5432 dbname=mydb user=postgres") |
| Ruby | PG::Connection.new |
PG::Connection.new(host: "localhost", port: "5432", user: "postgres", database: "mydb") |
パーサーは、すべての形式から ホスト、 ユーザー、 ポート、 データベース、 およびパスワード を抽出します。 ダイアログにパスワード フィールドが既に入力されている場合、パーサーは既存の値を保持します。
Note
解析後も、Advanced ドロワーを開いて、SSH トンネルや接続ごとの AI アクセス モード (Visual Studio Codeの Copilotアクセス モード、カーソルの AI アクセス モード) など、接続文字列に含まれない設定を構成できます。
証明書ファイルを構成する
お使いの環境で相互 TLS または認証局の明示的な検証が必要な場合は、詳細接続設定ドロワーの SSL アコーディオン セクションにある証明書ファイルの設定を使用してください。
SSL ルート証明書モード
SSL ルート証明書モードのドロップダウン リストは、拡張機能がルート CA 証明書を提供する方法を制御します。 次のいずれかの値を選択します。
| モード | Behavior |
|---|---|
| なし | ルート証明書は使用されません。 拡張機能では、サーバー証明書チェーンは検証されません。 |
| System | この拡張機能では、オペレーティング システムの信頼された証明書ストアが使用されます。 このモードでは 、Verify-Full SSL モードが必要です。拡張機能はこれを自動的に適用します。 |
| カスタム ファイル | SSL ルート証明書ファイル名というラベルが付いたテキスト フィールドが表示されます。 PEM でエンコードされたルート CA 証明書ファイルへのパスを入力します。 |
Important
[システム] を選択すると、SSL モードが自動的に [Verify-Full] に設定されます。 システムがアクティブな間に SSL モードを別の値に変更すると、検証エラー "Verify-Full SSL モードはシステム証明書ストアを使用するときに必要です" と表示されます。
クライアント証明書フィールド
SSL セクション内のこれらのフィールドにパスを指定して、相互 TLS を構成します。
| フィールド ラベル | 財産 | 説明 |
|---|---|---|
| SSL 証明書のファイル名 | sslcert |
クライアント証明書ファイルへのパス。 |
| SSL キーのファイル名 | sslkey |
クライアントの秘密キー ファイルへのパス。 |
| SSL ルート証明書のファイル名 | sslrootcert |
ルート CA 証明書へのパス ( SSL ルート証明書モード が カスタム ファイルの場合にのみ表示されます)。 |
| SSL CRL ファイル名 | sslcrl |
証明書失効リスト ファイルへのパス。 |
| SSL 圧縮を使用する | sslcompression |
SSL 接続で圧縮を有効にします。 |
Tip
Verify-CA モードと Verify-Full モードの場合は、拡張機能がサーバー証明書を検証できるようにルート証明書を常に構成します。 ファイル パスを指定せずにオペレーティング システムの信頼された CA ストアに依存するには、 システム モードを使用します。
SSH トンネル経由で接続する
SSH トンネリングは、暗号化された SSH チャネルを介して PostgreSQL 接続をルーティングします。 ワークステーションからデータベースに直接到達できない場合は、この方法を使用します。 たとえば、サーバーが要塞ホストの背後にあるプライベート ネットワークに存在する場合などです。
トンネルを有効にする
- 接続ダイアログを開き、[ 詳細設定 ] を選択して[ 接続設定の詳細設定] ドロワーを開きます。
- [SSH トンネル アコーディオン] セクションを展開します。
- SSH トンネリングを有効にする トグルをオンにします。 SSH 接続フィールドが表示されます。
SSH トンネル フィールド
| フィールド ラベル | 説明 |
|---|---|
| ホスト | SSH サーバー (要塞ホスト) のホスト名または IP アドレス。 |
| ポート | SSH サーバーのポート番号 (既定値: 22)。 |
| username | SSH サーバーで認証するユーザー名。 |
| Authentication | SSH 認証方法。 [パスワード]、[ID ファイル]、または [SSH エージェント] を選択します。 |
残りのフィールドは、選択した認証方法によって変わります。
| 認証方法 | 表示されるその他のフィールド |
|---|---|
| パスワード | パスワード/パスフレーズ: SSH パスワードを入力します。 [パスワード/パスフレーズを保存 ] チェック ボックスをオンにして、資格情報を保持します。 |
| ID ファイル |
ID ファイル: SSH 秘密キーへの完全なパスを入力します (例: ~/.ssh/id_ed25519)。
パスワード/パスフレーズ: 秘密キーが暗号化されている場合は、キーのパスフレーズを入力します。
[パスワード/パスフレーズを保存] チェック ボックスをオンにします。 |
| SSH エージェント | 追加のフィールドはありません。 拡張機能は、システムの SSH エージェントに認証を委任します (macOS と Linux のssh-agent、Windowsの OpenSSH 認証エージェント サービス)。 |
トンネルのしくみ
SSH トンネルが有効になっている場合、拡張機能は最初に SSH 接続を確立し、ローカル ポートを前方に作成してから、その転送を介して PostgreSQL に接続します。 このため、次の操作が行われます。
- メイン接続フィールドの サーバー名 は、 SSH ホストから見たデータベース アドレスである必要があります。これは、多くの場合、
localhostまたはプライベート IP です。 -
ポートはターゲット ホスト上の PostgreSQL ポートである必要があります (通常は
5432)。 - SSH トンネルの確立により、接続の待機時間が追加されます。 タイムアウトが発生した場合は、詳細オプションで Connect タイムアウト値を増やすことを検討してください。
適切な詳細オプションを選択する
| Scenario | 推奨される機能 |
|---|---|
既存の PostgreSQL URI、アプリ スニペット、または psql コマンドがある |
[ 接続文字列 ] タブを選択すると、フィールドが自動的に設定されます。 |
| 組織でカスタム CA ファイルまたは相互 TLS が必要です | 詳細ドロワーの SSL セクションで証明書フィールドを設定します。 |
| サーバー検証に OS 証明書ストアを使用する必要がある | SSL ルート証明書モードをシステムに設定し、SSL モードを Verify-Full に設定します。 |
| データベースはジャンプ ボックスまたは要塞ホスト経由でのみ到達可能です | 詳細ドロワーのSSH Tunnelセクションで、SSHトンネルを有効にします。 |