الاتصال بـ HDInsight (Apache Hadoop) باستخدام SSH

تعرف على كيفية استخدام Secure Shell (SSH) للاتصال بـ Apache Hadoop بأمان على Azure HDInsight. للحصول على معلومات حول الاتصال من خلال شبكة ظاهرية، راجع بنية الشبكة الظاهرية Azure HDInsight. راجع أيضاً، تخطيط توزيع الشبكة الظاهرية لأنظمة مجموعات Azure HDInsight.

يحتوي الجدول التالي على معلومات العنوان والمنفذ المطلوبة عند الاتصال بـ HDInsight باستخدام عميل SSH:

العنوان المنفذ يتصل بـ...
<clustername>-ssh.azurehdinsight.net 22 عقدة الرأس الأساسية
<clustername>-ssh.azurehdinsight.net 23 العقدة الثانوية
<edgenodename>.<clustername>-ssh.azurehdinsight.net 22 عقدة الحافة (أي نوع نظام مجموعة آخر، إذا كان هناك عقدة حافة)

استبدل <clustername> باسم نظام مجموعة الخاص بك. استبدل <edgenodename> باسم عقدة الحافة.

إذا كان نظام المجموعة يحتوي على عقدة حافة، نوصي بالاتصال دائماً إلى عقدة الحافة باستخدام SSH. تستضيف عقد الرأس الخدمات التي تعتبر حاسمة لحالة Hadoop. تعمل عقدة الحافة فقط على ما تضعه عليها. لمزيد من المعلومات حول استخدام عقد الحافة، راجع استخدام عقد الحافة في HDInsight.

تلميح

عند الاتصال بـ HDInsight لأول مرة، قد يعرض عميل SSH الخاص بك تحذيراً بأنه لا يمكن إثبات أصالة المضيف. عند المطالبة، حدد «نعم»، لإضافة المضيف إلى قائمة الخادم الموثوق به لعميل SSH الخاص بك.

إذا كنت قد قمت بالاتصال مسبقاً بخادم يحمل نفس الاسم، قد تتلقى تحذيراً بأن مفتاح المضيف المخزن لا يطابق مفتاح المضيف الخاص بالخادم. راجع الوثائق لعميل SSH الخاص بك حول كيفية إزالة الإدخال الموجود لاسم الخادم.

عملاء SSH

توفر أنظمة Linux وUnix وmacOS الأوامر ssh وscp. يتم استخدام العميل ssh عادة لإنشاء جلسة سطر أوامر بعيدة مع نظام يستند إلى Linux أو Unix. يتم استخدام العميل scp لنسخ الملفات بشكل آمن بين العميل والنظام البعيد.

لا تقوم Microsoft Windows بتثبيت أي عملاء SSH بشكل افتراضي. عملاء ssh وscp متوفرين لـ Windows من خلال الحزم التالية:

وهناك أيضاً العديد من عملاء SSH الرسومية، مثل PuTTY وMobaXterm. في حين يمكن استخدام هؤلاء العملاء للاتصال بـ HDInsight، عملية الاتصال مختلفة عن استخدام الأداة المساعدة ssh. لمزيد من المعلومات، راجع وثائق العميل الرسومي الذي تستخدمه.

المصادقة: مفاتيح SSH

تستخدم مفاتيح SSH تشفير المفتاح العام لمصادقة جلسات SSH. مفاتيح SSH أكثر أماناً من كلمات المرور، وتوفر طريقة سهلة لتأمين الوصول إلى نظام مجموعة Hadoop.

إذا تم تأمين حساب SSH الخاص بك باستخدام مفتاح، يجب على العميل توفير المفتاح الخاص المطابق عند الاتصال:

  • يمكن تكوين معظم العملاء لاستخدام مفتاح افتراضي. على سبيل المثال، ssh يبحث العميل عن مفتاح خاص في على بيئات Linux وUnix~/.ssh/id_rsa.

  • يمكنك تحديد المسار إلى مفتاح خاص. مع عميل ssh، يتم استخدام المعلمة -i لتحديد المسار إلى المفتاح الخاص. على سبيل المثال، ssh -i ~/.ssh/id_rsa sshuser@myedge.mycluster-ssh.azurehdinsight.net

  • إذا كان لديك عدة مفاتيح خاصة للاستخدام مع خوادم مختلفة، ففكر في استخدام أداة مساعدة مثل عامل ssh (https://en.wikipedia.org/wiki/Ssh-agent). يمكن استخدام الأداة المساعدة ssh-agent لتحديد المفتاح تلقائياً لاستخدامه عند إنشاء جلسة SSH.

هام

إذا قمت بتأمين المفتاح الخاص بك باستخدام عبارة مرور، يجب إدخال عبارة المرور عند استخدام المفتاح. يمكن للأدوات المساعدة مثل ssh-agent تخزين كلمة المرور مؤقتاً من أجل راحتك.

أنشئ مفتاح مزدوج SSH

استخدم الأمر ssh-keygen لإنشاء ملفات المفاتيح العامة والخاصة. يقوم الأمر التالي بإنشاء مفتاح مزدوج 2048 بت RSA الذي يمكن استخدامه مع HDInsight:

ssh-keygen -t rsa -b 2048

تتم مطالبتك بالمعلومات أثناء عملية إنشاء المفتاح. على سبيل المثال، حيث يتم تخزين المفاتيح أو ما إذا كان سيتم استخدام عبارة مرور أم لا. بعد اكتمال العملية، يتم إنشاء ملفين ومفتاح عام ومفتاح خاص.

  • يتم استخدام المفتاح العام لإنشاء نظام مجموعة HDInsight. المفتاح العام له ملحق .pub.

  • يتم استخدام المفتاح الخاص لمصادقة العميل إلى نظام مجموعة HDInsight.

هام

يمكنك تأمين المفاتيح الخاصة بك باستخدام عبارة مرور. عبارة المرور هي كلمة مرور على المفتاح الخاص بك بشكل فعال. حتى إذا حصل شخص ما على المفتاح الخاص بك، يجب أن يكون لديهم عبارة المرور لاستخدام هذا المفتاح.

إنشاء HDInsight باستخدام المفتاح العام

أسلوب الإنشاء كيفية استخدام المفتاح العام
مدخل Azure قم بإلغاء تحديد استخدام كلمة مرور تسجيل دخول نظام المجموعة لـ SSH، ثم حدد المفتاح العام كنوع مصادقة SSH. وأخيرا، حدد ملف المفتاح العام أو الصق محتويات النص للملف في حقل المفتاح العام SSH.
SSH public key dialog in HDInsight cluster creation.
Azure PowerShell استخدم معلمة -SshPublicKey لـ cmdlet New-AzHdinsightCluster ثم قم بتمرير محتويات المفتاح العام كسلسلة.
Azure CLI استخدم معلمة --sshPublicKey للأمر az hdinsight create ثم قم بتمرير محتويات المفتاح العام كسلسلة.
قالب Resource Manager للحصول على مثال لاستخدام مفاتيح SSH مع قالب، راجع توزيع HDInsight على Linux باستخدام مفتاح SSH. يتم استخدام العنصر publicKeys في ملف azuredeploy.json لتمرير المفاتيح إلى Azure عند إنشاء نظام المجموعة.

المصادقة: كلمة المرور

يمكن تأمين حسابات SSH باستخدام كلمة مرور. عند الاتصال ب، HDInsight باستخدام SSH، ستتم مطالبتك بإدخال كلمة المرور.

تحذير

لا تنصح Microsoft باستخدام مصادقة كلمة المرور لـ SSH. يمكن تخمين كلمات المرور وهي عرضة لهجمات بقوة غاشمة. بدلاً من ذلك، نوصي باستخدام مفاتيح SSH للمصادقة.

هام

تنتهي صلاحية كلمة مرور حساب SSH بعد 70 يوماً من إنشاء نظام المجموعة HDInsight. إذا انتهت صلاحية كلمة المرور الخاصة بك، يمكنك تغييرها باستخدام المعلومات الموجودة في مستند إدارة HDInsight.

إنشاء HDInsight باستخدام كلمة مرور

أسلوب الإنشاء كيفية تحديد كلمة المرور
مدخل Azure بشكل افتراضي، يحتوي حساب مستخدم SSH نفس كلمة المرور كحساب تسجيل الدخول نظام المجموعة. لاستخدام كلمة مرور مختلفة، قم بإلغاء تحديد استخدام كلمة مرور تسجيل الدخول إلى نظام المجموعة ل SSH، ثم أدخل كلمة المرور في حقل كلمة مرور SSH.
SSH password dialog in HDInsight cluster creation.
Azure PowerShell استخدم المعلمة --SshCredential لـ New-AzHdinsightCluster cmdlet وقم بتمرير عنصر PSCredential الذي يحتوي على كلمة مرور واسم حساب المستخدم SSH.
Azure CLI استخدم المعلمة --ssh-password للأمر az hdinsight create وقم بإدخال قيمة كلمة المرور.
قالب Resource Manager للحصول على مثال لاستخدام كلمة المرور مع قالب، راجع توزيع HDInsight على Linux باستخدام كلمة مرور SSH. يتم استخدام العنصر linuxOperatingSystemProfile في ملف azuredeploy.json لتمرير كلمة مرور واسم حساب SSH إلى Azure عند إنشاء نظام المجموعة.

تغيير كلمة مرور SSH

للحصول على معلومات حول تغيير كلمة مرور حساب المستخدم SSH، راجع القسم تغيير كلمات المرور للمستند إدارة HDInsight.

مجال المصادقة ضم HDInsight

إذا كنت تستخدم نظام مجموعة HDInsight مرتبط بمجال، يجب عليك استخدام الأمر kinit بعد الاتصال بمستخدم SSH المحلي. يطالبك هذا الأمر بمستخدم مجال وكلمة مرور، ويصادق جلسة العمل الخاصة بك مع مجال Microsoft Entra المقترن بالمجموعة.

يمكنك أيضاً تمكين مصادقة Kerberos على كل عقدة مرتبطة بالمجال (على سبيل المثال، عقدة الرأس، عقدة الحافة) إلى ssh باستخدام حساب المجال. للقيام بذلك، قم بتحرير ملف التكوين sshd:

sudo vi /etc/ssh/sshd_config

إلغاء الاتصال وتغيير KerberosAuthentication إلى yes

sudo service sshd restart

استخدم الأمر klist للتحقق مما إذا كانت مصادقة Kerberos ناجحة أم لا.

لمزيد من المعلومات، راجع تكوين HDInsight المرتبط بالمجال.

الاتصال بالعقد

يمكن الوصول إلى عقدة الرأس وعقدة الحافة (إذا كان هناك أحد منهما) عبر الإنترنت على المنفذين 22 و23.

  • عند الاتصال بعقد الرأس، استخدم المنفذ 22 للاتصال بعقدة الرأس الأساسية والمنفذ 23 للاتصال بعقدة الرأس الثانوية. اسم المجال المؤهل بالكامل المطلوب استخدامه هو clustername-ssh.azurehdinsight.net، حيث clustername هو اسم نظام المجموعة الخاص بك.

    # Connect to primary head node
    # port not specified since 22 is the default
    ssh sshuser@clustername-ssh.azurehdinsight.net
    
    # Connect to secondary head node
    ssh -p 23 sshuser@clustername-ssh.azurehdinsight.net
    
  • عند الاتصال بعقدة الحافة، استخدم المنفذ 22. اسم المجال المؤهل بالكامل هو edgenodename.clustername-ssh.azurehdinsight.net، حيث edgenodename هو الاسم الذي قمت بإدخاله عند إنشاء عقدة الحافة. clustername هو اسم نظام المجموعة.

    # Connect to edge node
    ssh sshuser@edgnodename.clustername-ssh.azurehdinsight.net
    

هام

تفترض الأمثلة السابقة استخدام مصادقة كلمة المرور أو أن مصادقة الشهادة تحدث تلقائياً. إذا كنت تستخدم مفتاح SSH مزدوج للمصادقة، ولم يتم استخدام الشهادة تلقائياً، استخدم المعلمة -i لتحديد المفتاح الخاص. على سبيل المثال، ssh -i ~/.ssh/mykey sshuser@clustername-ssh.azurehdinsight.net

بمجرد الاتصال، تتغير المطالبة للإشارة إلى اسم مستخدم SSH والعقدة التي تتصل بها. على سبيل المثال، عند الاتصال بعقدة الرأس الأساسية مثل sshuser، تكون المطالبة sshuser@<active-headnode-name>:~$.

الاتصال بعقد Apache Zookeeper والعامل

عقد العامل وعقد Zookeeper غير قابلة للوصول مباشرةً من الإنترنت. يمكن الوصول إليها من عقد رأس نظام المجموعة أو عقد الحافة. فيما يلي الخطوات العامة للاتصال بالعقد الأخرى:

  1. استخدم SSH للاتصال بعقدة الرأس أو الحافة:

    ssh sshuser@myedge.mycluster-ssh.azurehdinsight.net
    
  2. من اتصال SSH إلى عقدة الرأس أو الحافة، استخدم الأمر ssh للاتصال بعقدة العامل في نظام المجموعة:

    ssh sshuser@wn0-myhdi
    

    لاسترداد قائمة أسماء العقد، راجع إدارة HDInsight باستخدام مستند واجهة برمجة تطبيقات REST لـ Apache Ambari.

إذا تم تأمين حساب SSH باستخدام كلمة مرور، أدخل كلمة المرور عند الاتصال.

إذا تم تأمين حساب SSH باستخدام مفاتيح SSH، تأكد من تمكين إعادة توجيه SSH على العميل.

إشعار

طريقة أخرى للوصول مباشرة إلى كافة العقد في نظام المجموعة هي تثبيت HDInsight في شبكة Azure الظاهرية. ثم يمكنك الانضمام إلى الجهاز البعيد إلى نفس الشبكة الظاهرية والوصول مباشرة إلى كافة العقد في نظام المجموعة.

لمزيد من المعلومات، راجع تخطيط شبكة ظاهرية لـ HDInsight.

تكوين إعادة توجيه عامل SSH

هام

تفترض الخطوات التالية نظام مستند إلى Linux أو UNIX، وتعمل مع Bash على Windows 10. إذا لم تنجح هذه الخطوات للنظام الخاص بك، قد تحتاج إلى مراجعة الوثائق لعميل SSH الخاص بك.

  1. باستخدام محرر نص، افتح ~/.ssh/config. إذا لم يكن هذا الملف موجوداً، يمكنك إنشاؤه بإدخال touch ~/.ssh/config في سطر أوامر.

  2. قم بإضافة النص التالي إلى ملف config:

    Host <edgenodename>.<clustername>-ssh.azurehdinsight.net
        ForwardAgent yes
    

    قم باستبدال معلومات المضيف بعنوان العقدة التي تتصل بها باستخدام SSH. يستخدم المثال السابق عقدة الحافة. يقوم هذا الإدخال بتكوين إعادة توجيه عامل SSH للعقدة المحددة.

  3. اختبار إعادة توجيه عامل SSH باستخدام الأمر التالي من المحطة الطرفية:

    echo "$SSH_AUTH_SOCK"
    

    يرجع هذا الأمر معلومات مشابهة للنص التالي:

    /tmp/ssh-rfSUL1ldCldQ/agent.1792
    

    إذا لم يتم إرجاع أي شيء، ثم ssh-agent لا يعمل.

  4. بمجرد التحقق من تشغيل عامل ssh، استخدم ما يلي لإضافة المفتاح الخاص SSH الخاص بك إلى العامل:

    ssh-add ~/.ssh/id_rsa
    

    إذا تم تخزين مفتاحك الخاص في ملف مختلف، استبدل ~/.ssh/id_rsa بالمسار إلى الملف.

  5. قم بالاتصال بعقدة حافة نظام المجموعة أو العقد الرأسية باستخدام SSH. ثم استخدم الأمر SSH للاتصال بعقده عامل أو zookeeper. يتم تأسيس الاتصال باستخدام المفتاح الذي تمت إعادة توجيهه.

الخطوات التالية