SSHトンネリング
データベース接続でのSSHトンネルの使用
クラウド環境
Retoolでは、以下の手順を使用してSSHトンネリングを介してプライベート・ネットワーク内でホストされている、Postgres、MySQL、MSSQL、MongoDB、Cassandra、Redis、Vertica、およびRethinkデータベースへの接続がサポートされています。
- 自分のデータベース・タイプの新しい接続をオープンします。フォームの下部に、SSHトンネルを介した接続を可能にするセクションがあります。有効にすると、以下のフォームが表示されます。
-
RetoolでSSHトンネルを確立するホストの入力、およびRetoolの公開鍵をダウンロードするためのリンクのクリックが求められます。Retoolで、対応する秘密鍵、およびユーザー名retoolを使用して要塞ホストへの接続が試みられます。
-
Retoolで正常にトンネルを確立するには、Retoolに接続を許可するように、要塞ホストを構成する必要があります。
-
Retoolのユーザー・アカウントを作成します。以下に、さまざまな環境でのスクリプト実行例を示します。
ec2-user@bastion:~$ 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ユーザーにパスワードを作成しない
ec2-user@bastion:~$ 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
をホワイトリストに登録することもできます。
- 構成が完了すると、接続フォームの他の部分で、データベースのプライベート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トンネル構成が正しくないか、データベースのホストまたはポートが正しくない場合です。エラーを見つけるために、以下の手順を試してみてください。
- SSHホストでretoolユーザーを作成し、公開鍵を追加しましたか?
- SSHホストにアクセスできる場合は、認証ログ(
tail -f /var/log/auth.log
)をモニタリングしながらRetoolを接続してみます。まったく接続が試みられていない場合は、RetoolのIPをホワイトリストに登録していない可能性があります。 - デバッグ中は、正しいSSHトンネル構成を使用しますが、データベース構成は、localhost:5555など、偽のものにします。SSHトンネルが正常である場合は、「Connection refused」エラーが表示され、SSHトンネル構成ではなくデータベース構成に問題があることが分かります。
Updated almost 4 years ago