Not supported in ClickHouse Cloud
ClickHouse サーバーは、SSH プロトコルを使用して自身に直接接続できます。任意のクライアントから接続可能です。
SSH キーで認証されるデータベースユーザー を作成したら、次のようにします。
CREATE USER abcuser IDENTIFIED WITH ssh_key BY KEY '<REDACTED>' TYPE 'ssh-ed25519';
このキーを使用して ClickHouse サーバーに接続できます。clickhouse-client の対話型セッション用の擬似端末 (PTY) が開きます。
> ssh -i ~/test_ssh/id_ed25519 abcuser@localhost -p 9022
ClickHouse embedded version 25.1.1.1.
ip-10-1-13-116.us-west-2.compute.internal :) SELECT 1;
SELECT 1
Query id: cdd91b7f-215b-4537-b7df-86d19bf63f64
┌─1─┐
1. │ 1 │
└───┘
1 row in set. Elapsed: 0.002 sec.
SSH 経由でのコマンド実行(非対話モード)にも対応しています。
> ssh -i ~/test_ssh/id_ed25519 abcuser@localhost -p 9022 "select 1"
1
サーバー設定
SSH サーバー機能を有効にするには、config.xml 内で次のセクションのコメントアウトを解除するか、追加する必要があります:
<tcp_ssh_port>9022</tcp_ssh_port>
<ssh_server>
<host_rsa_key>鍵へのパス</host_rsa_key>
<!--host_ecdsa_key>鍵へのパス</host_ecdsa_key-->
<!--host_ed25519_key>鍵へのパス</host_ed25519_key-->
</ssh_server>
ホストキーは SSH プロトコルにおいて不可欠な要素です。このキーの公開鍵部分はクライアント側の ~/.ssh/known_hosts ファイルに保存されており、通常は中間者攻撃を防ぐために利用されます。サーバーに初めて接続すると、次のようなメッセージが表示されます。
ホスト '[localhost]:9022 ([127.0.0.1]:9022)' の真正性を確立できません。
RSA 鍵フィンガープリントは SHA256:3qxVlJKMr/PEKw/hfeg06HAK451Tt0eenhwqQvh58Do です。
この鍵は他の名前では認識されていません
接続を続行しますか (yes/no/[fingerprint])?
これは実際には「このホストの公開鍵を記憶して、接続を続行しますか?」という意味です。
SSH クライアントにオプションを指定することで、ホストの検証を行わないように指示できます。
ssh -o "StrictHostKeyChecking no" user@host
組み込みクライアントの設定
組み込みクライアントには、通常の clickhouse-client と同様にオプションを指定できますが、いくつか制限があります。
SSH プロトコルを使用しているため、接続先ホストにパラメータを渡す唯一の方法は環境変数を通すことです。
例えば、format を設定するには次のようにします。
> ssh -o SetEnv="format=Pretty" -i ~/test_ssh/id_ed25519 abcuser@localhost -p 9022 "SELECT 1"
┏━━━┓
┃ 1 ┃
┡━━━┩
1. │ 1 │
└───┘
この方法で任意のユーザーレベルの設定を変更できるほか、ほとんどの一般的な clickhouse-client オプションも渡すことができます(このセットアップでは意味をなさないものを除きます)。
重要:
query オプションと SSH コマンドの両方が指定された場合、後者は実行するクエリのリストに追加されます。
ubuntu ip-10-1-13-116@~$ ssh -o SetEnv="format=Pretty query=\"SELECT 2;\"" -i ~/test_ssh/id_ed25519 abcuser@localhost -p 9022 "SELECT 1"
┏━━━┓
┃ 2 ┃
┡━━━┩
1. │ 2 │
└───┘
┏━━━┓
┃ 1 ┃
┡━━━┩
1. │ 1 │
└───┘