SSHトンネリング

データベース接続でのSSHトンネルの使用

クラウド環境

Retoolでは、以下の手順を使用してSSHトンネリングを介してプライベート・ネットワーク内でホストされている、Postgres、MySQL、MSSQL、MongoDB、Cassandra、Redis、Vertica、およびRethinkデータベースへの接続がサポートされています。

  1. 自分のデータベース・タイプの新しい接続をオープンします。フォームの下部に、SSHトンネルを介した接続を可能にするセクションがあります。有効にすると、以下のフォームが表示されます。
  1. RetoolでSSHトンネルを確立するホストの入力、およびRetoolの公開鍵をダウンロードするためのリンクのクリックが求められます。Retoolで、対応する秘密鍵、およびユーザー名retoolを使用して要塞ホストへの接続が試みられます。

  2. Retoolで正常にトンネルを確立するには、Retoolに接続を許可するように、要塞ホストを構成する必要があります。

  3. Retoolのユーザー・アカウントを作成します。以下に、さまざまな環境でのスクリプト実行例を示します。

[email protected]:~$ sudo adduser retool --disabled-password
Adding user `retool' ...
Adding new group `retool' (1003) ...
Adding new user `retool' (1003) with group `retool' ...
Creating home directory `/home/retool3' ...
Copying files from `/etc/skel' ...
Changing the user information for retool3
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
# Retoolユーザーにパスワードを作成しない
[email protected]:~$ sudo adduser retool --password NP

Retoolにホストへの接続を許可するには、ファイル/home/retool/.ssh/authorized_keysの内容を編集して、新しい行にステップ2の公開鍵の内容を含める必要があります。

# ルートでログイン
sudo su

# まだ存在していなければ、authorized_keysファイルを作成
mkdir -p /home/retool/.ssh
touch /home/retool/.ssh/authorized_keys

# エディタを使ってRetoolの公開鍵をファイルに追加
vim /home/retool/.ssh/authorized_keys

# authorized_keysファイルにパーミッションを設定
chmod 644 authorized_keys

# authorized_keysファイルのオーナーをRetoolに変更
chown retool:retool authorized_keys

サーバーへのアクセスを最小限にしたい場合は、RetoolのIPアドレス52.175.251.223をホワイトリストに登録することもできます。

  1. 構成が完了すると、接続フォームの他の部分で、データベースのプライベートIPアドレスを使用できるようになります。

オンプレミス環境

上記の手順は、ほとんどのオンプレミス・デプロイメント環境でも機能します。Retoolでは、ほとんどの場合、キー・ペアを使用して自分の環境が自動プロビジョニングされます。

Retoolオンプレミスでは、カスタムSSHキーとユーザー名の使用もサポートされています。retool_onpremise Gitリポジトリー内に、「keys」ディレクトリーがあります。このディレクトリーは、ボリュームとしてRetoolコンテナーにマウントされます。これで、使用したい秘密鍵をRetool内からこのディレクトリーに配置できるようになります。例えば、mykey.pemを使用したい場合は、それをkeysディレクトリーの下に配置してから、自分のデータベースを接続するためのインターフェイスで、以下のように入力します。

一般的な接続エラーのデバッグ

All configured authentication methods failed.

このエラーは、通常は、RetoolでSSHホストへの到達はできるが認証ができないことを意味します。retoolユーザーを作成してあることと、Retoolの公開鍵がauthorized keysに追加されていることを確認します。

Channel open failure: Connection refused

このエラーは、SSHトンネリング構成は機能しているが、接続を試みたホストまたはポートでその接続が拒否されたときに発生します。

Could not establish a connection. Try checking your database firewall configuration and whitelisting Retool's IP address.

このエラーは、通常は、ファイアウォールやその他の構成が正しく行われていない場合に発生します。例えば、PostgresをHTTPポートに接続しようとしたが、SSHトンネル構成が正しくないか、データベースのホストまたはポートが正しくない場合です。エラーを見つけるために、以下の手順を試してみてください。

  1. SSHホストでretoolユーザーを作成し、公開鍵を追加しましたか?
  2. SSHホストにアクセスできる場合は、認証ログ(tail -f /var/log/auth.log)をモニタリングしながらRetoolを接続してみます。まったく接続が試みられていない場合は、RetoolのIPをホワイトリストに登録していない可能性があります。
  3. デバッグ中は、正しいSSHトンネル構成を使用しますが、データベース構成は、localhost:5555など、偽のものにします。SSHトンネルが正常である場合は、「Connection refused」エラーが表示され、SSHトンネル構成ではなくデータベース構成に問題があることが分かります。