Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

واجهة SSH مع PTY

ميزة تجريبية
غير مدعوم في ClickHouse Cloud

مقدمة

يتيح خادم ClickHouse الاتصال به مباشرةً عبر بروتوكول SSH. ويمكن استخدام أي عميل.

بعد إنشاء مستخدم قاعدة بيانات مُعرَّف باستخدام مفتاح SSH:

CREATE USER abcuser IDENTIFIED WITH ssh_key BY KEY '<REDACTED>' TYPE 'ssh-ed25519';

يمكنك استخدام هذا المفتاح للاتصال بخادم ClickHouse. سيؤدي ذلك إلى فتح طرفية زائفة (PTY) مع جلسة تفاعلية لـ clickhouse-client.

> 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>path-to-the-key</host_rsa_key>
   <!--host_ecdsa_key>path-to-the-key</host_ecdsa_key-->
   <!--host_ed25519_key>path-to-the-key</host_ed25519_key-->
</ssh_server>

يُعد مفتاح المضيف جزءًا أساسيًا من بروتوكول SSH. ويُخزَّن الجزء العام من هذا المفتاح في الملف ~/.ssh/known_hosts على جهة العميل، ويُستخدم عادةً للحماية من هجمات الرجل في الوسط. عند الاتصال بالخادم للمرة الأولى، ستظهر لك الرسالة التالية:

The authenticity of host '[localhost]:9022 ([127.0.0.1]:9022)' can't be established.
RSA key fingerprint is SHA256:3qxVlJKMr/PEKw/hfeg06HAK451Tt0eenhwqQvh58Do.
This key is not known by any other names
Are you sure you want to continue connecting (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
   └───┘

يمكنك بهذه الطريقة تغيير أي user-level setting، وكذلك تمرير معظم خيارات 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
   └───┘
Navigation