البحث في الموقع
المحتوى عن 'مدخل إلى ssh'.
-
SSH عبارة عن بروتوكول آمن يُستخدم كوسيلة أساسيّة للاتصال بخوادم لينكس عن بُعد. SSH تُقدّمُ واجهة نصّية بحيثُ تعطيك الصّلاحيّة لكتابة أي أوامر وتنفيذها مباشرة على الخادوم. بعد الاتصال، جميع الأوامر التي تكتبها على الطرفيّة محليّاً تُرسل إلى الخادوم عن بعد وتُنفّذ هناك. في هذا الدّليل السّريع، سنُغطّي بعضاً من أكثر وسائل الاتّصال بSSH شيوعاً لتحقيق أهدافك. هذا المقال يُمكن أن يُستعمل كمرجع سريعٍ كلّما احتجت إلى معرفة كيفية الاتصال بخادومك أوضبطه بطرق مختلفة. نظرة عامة على SSH أشهر وسيلة للاتّصال بخادوم لينكس عن بعد هي استعمال SSH .SSH اختصار ل Secure Shell أو شل آمن، حيث تُوفّر وسيلة آمنة لتنفيذ الأوامر، إضافة تعديلات وضبط الخدمات عن بُعد. عندما تتّصل عبر SSH، تقوم بتسجيل الدّخول باستخدام حساب موجود على الخادوم. كيف يعمل SSH عندما تتّصل عبر SSH، ستدخلُ إلى جلسة شل (shell session)، وهي واجهة نصّيّة تُمكّنك من التّفاعل مع خادومك. أثناء الجلسة جميع الأوامر التي تُنفّذها في الطرفيّة محليّاً تُرسل عبر نفق SSH أو SSH tunnel مُشفّر وتُنفّذ على الخادوم. اتصال SSH يُنفّذ باستخدام نموذج خادوم خاص بالعميل. هذا يعني أن إنشاء اتصال SSH يتطلّب تشغيل برمجيّة تسمى عفريت SSH على الخادوم. تستمع هذه البرمجيّة للاتصالات على منفذ شبكة معيّن، طلبات تسجيل الدّخول والاستيثاق authentication من هوية صاحب الاتصال وتقوم بتقديم البيئة المناسبة إذا قام المستخدم بتوفير المعلومات الصّحيحة. يجب على المُستخدم أن يمتلك على جهازه برمجية تسمى عميل SSH أو SSH client، البرمجية تعرف كيف تتواصل باستخدام بروتوكول SSH ويُمكن أن تُمنَح معلومات عن المُضيف البعيد (الخادوم) للاتّصال به،عن طريق اسم المستخدم ومعلومات يجب تمريرها للاتّصال بنجاح. يمكن للعميل أيضاً أن يحدّد تفاصيل معيّنة عن نوع الاتّصال المرغوب فيه. كيف يقوم SSH بتسجيل دخول المستخدمين العميل يصادق إمّا باستخدام كلمات المُرور ( أقلّ أماناً وغير منصوح بها) أو عن طريق مفاتيح SSH، التي تعتبر آمنة جدّاً. كلمات المرور تُشفَّرُ وتعتبر سهلة الفهم بالنّسبة للمُستخدمين الجُدد. لكنّ المُخترقين يستعملون برمجيّات خبيثة يُمكن لها أن تُكرّر محاولات الدّخول إلى حواسيب من يستخدمون كلمات المرور، ما قد يُؤدي إلى اختلال أمني. لهذا السّبب ننصح دائما بالاعتماد على استيثاق SSH المبدئي لمُعظم الإجراءات. مفاتيح SSH هي مجموعة من المفاتيح المُشفّرة يُمكن استعمالها للاستيثاق. كلّ مجموعة تحتوي على مفتاح عام وخاص. يُمكن نشر المفتاح العام بشكل حرّ، أما المفتاح الخاص فيجب الاحتفاظ به ولا يجب أن يُكشف لأحد. للاستيثاق باستخدام مفاتيح SSH، يجب على المستخدم أن يمتلك زوج مفتاح SSH على جهازه المحلي. وعلى الخادم البعيد المفتاح العام يجب أن ينسخ إلى ملفّ بداخل مجلّد منزل المُستخدم على ssh/authorized_keys./~ . هذا الملفّ يحتوي على قائمة من المفاتيح العامّة - واحد في كلّ سطر- مُخوّلٌ لها بالدّخول إلى الحساب. عندما يتّصل عميل بالمُضيف Host راغباً باستخدام استيثاق مفتاح SSH، سيُعلم الخادومَ عن أي مفتاح عام يستخدم. يتحقّق الخادوم بعد ذلك من ملفّ المفاتيح المُخوّل لها authorized_keys باحثاً عن المفتاح العام المُستخدم. ثم يولّد سلسلة نصّية عشوائيا ويُشفّر باستخدام المفتاح العام، هذا النّص المُشفّر يُمكن فك تشفيره فقط باستعمال المفتاح الخاصّ المُقترن. سيُرسل الخادوم هذه الرّسالة المُشفرة إلى العميل لاختبار إذا ما كان فعلا يمتلك المفتاح الخاصّ المُرتبط. عند استلام الرّسالة، سيقوم العميل بفك التّشفير باستخدام المفتاح الخاص ويجمع السّلسلة نصّية العشوائية مع هوية جلسة سابقة (session ID) . ويولّد بعد ذلك مزيج MD5 الخاص بالقيمة وينقلها مجدّدا إلى الخادوم. الخادوم يمتلك سابقا الرّسالة الأصليّة وهوية الجلسة، لذلك يُمكنه أن يُقارن مزيج MD5 المولّد من القيّم ويُحدّد بأن العميل يجب أن يمتلك المفتاح الخاص. الآن بما أنّك تعلم كيف يعمل SSH، يُمكننا البدء في الحديث عن بعض الأمثلة للتعرّف على الطّرق المُختلفة للعمل مع SSH. توليد مفاتيح SSH والعمل معها هذا القسم سيغطي كيف تولّد مفاتيح SSH على جهاز عميل ونشر المفتاح العام إلى الخوادم حيث يجب أن تُستخدم. هذا قسم جيّد للبدء به إذا لم يسبق لك أن ولّدت مفاتيح، ويجب عليك البدء به إذا أردت تأمين خادومك نظراً لزيادة الأمان التي تتيحه لنا في الاتصّالات المُستقبليّة. توليد زوج مفاتيح SSH توليد زوج مفاتيح SSH عام وخاص على جهازك المحلي هو أول خطوة نحو استيثاق مع خادوم عن بعد بدون كلمة مرور. إلا إذا كنت تملك سببا جيدا لعدم فعل ذلك، يجب عليك دائما الاتصال باستخدام مفاتيح SSH. يمكن استخدام مجموعة من خوارزميّات التشفير لتوليد مفاتيح SSH، مثل RSA، DSA، ECDSA. مفاتيح RSA مُفضلة بشكل عام وهي نوعية المفاتيح الافتراضية. لتوليد زوج مفاتيح RSA على جهازك المحلي، أكتب: $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/demo/.ssh/id_rsa): هذا المحث (prompt) يتيح لك اختيار مكان لتخزين مفتاح RSA الخاص. اضغط Enter للخيار الافتراضي، الذي سيُخزنها في مجلّد .ssh المخفي قي مجلد المنزل. ترك المسار الافتراضي سيتيح لعميل SSH إيجاد المفاتيح آلياً. Enter passphrase (empty for no passphrase): Enter same passphrase again: المحث التالي يتيح لك إدخال جملة مرور بطول اعتباطي لتأمين مفتاحك الخاص. افتراضياً يجب عليك إدخال جملة المرور هذه في كل مرّة تستعمل المفتاح الخاص، كإجراء أمني إضافي. يُمكنك أن تضغط Enter لترك الحقل فارغا إذا لم ترغب في إنشاء كلمة مرور. تذكّر فقط أن هذا سيخوّل أي شخص يملك قابلية التحكم بمفتاح SSH الخاص للدخول إلى الخادوم الخاص بك. إذا اخترت وضع كلمة مرور لن يظهر شيء على الشاشة أثناء الكتابة، وهذا من أجل الاحتياط الأمني. Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 8c:e9:7c:fa:bf:c4:e5:9c:c9:b8:60:1f:fe:1c:d3:8a root@here The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | + | | o S . | | o . * + | | o + = O . | | + = = + | | ....Eo+ | +-----------------+ هذه العملية ولّدت زوج مفاتيح SSH من نوع RSA، وملفّات تحت المجلد المخفي .ssh في مجلد المنزل وهذه الملفّات هي: ssh/id_rsa./~: المفتاح الخاص. لا تنشر هذا الملفّ! ssh/id_rsa.pub./~: المفتاح العام المُرتبط. هذا الملفّ يمكن مشاركته بحرية. توليد زوج مفاتيح مع رقم أكبر من البتات Bits مفاتيح SSH تكون افتراضياً 2048 بت. هذا يعتبر جيّداً بشكل عام أمنياً، لكنّك تستطيع تحديد عدد أكبر لمزيد من الأمان. لفعل ذلك ضَمِّن معامل -b مع عدد البتات الذي تريد. معظم الخوادم تدعم 4096 بت على الأقل. المفاتيح الأطول يُمكن ألّا تُقبل لأغراض الحماية من DDOS: ssh-keygen -b 4096 إذا سبق لك أن أنشئت مفتاحاً، سيُطلب منك إذا ما كنت ترغب في الكتابة فوق المفتاح السّابق: Overwrite (y/n)? إذا اخترت نعم (y)، فإن المفتاح الجديد سيكتب فوق المفتاح السّابق ولن تستطيع استعمال المفتاح القديم بعدها للدّخول إلى الخادوم، لذلك كن حذرا أثناء تغيير المفتاح. حذف وتغيير جملة المرور على المفتاح الخاص إذا سبق لك وأن عيّنت جملة مرور للمفتاح الخاص ورغبت في تغييرها فالأمر بسيط، ويمكنك أن تقوم به بسهولة. ملاحظة: لتغيير أو حذف جملة المُرور، يجب عليك معرفة جملة المرور الأصليّة. إذا فقدت جملة المرور إلى المفتاح،فللأسف لا يوجد طريقة لإرجاعها وسيتوجّب عليك توليد زوج مفاتيح جديد. لتغيير أو حذف جملة المرور، فقط أكتب: ssh-keygen -p Enter file in which the key is (/root/.ssh/id_rsa): يُمكنك أن تُحدد مسار المفتاح الذي تحاول تعديله أو اضغط Enter لقبول القيمة الافتراضيّة: Enter old passphrase: أكتب جملة المرور القديمة المراد تغييرها. بعد ذلك ستُسأل لإدخال جملة مرور جديدة: Enter new passphrase (empty for no passphrase): Enter same passphrase again: هنا أكتب جملة المرور الجديدة أو اضغط Enter لحذفها. عرض بصمة مفتاح SSH ينشر كل زوج مفاتيح بصمة مُشفّرة يُمكن استعمالها لتعريف المفاتيح بشكل فريد. يُمكن أن يكون هذا جيّدا في كثير من الحالات. لإيجاد بصمة مفتاح SSH، اكتب: ssh-keygen -l Enter file in which the key is (/root/.ssh/id_rsa): إذا كان هذا هو مسار المفتاح الصحيح اضغط ENTER ، أو اكتب المسار الخاص إذا كان المسار مختلفاً، ستُرجع سلسلة نصيّة تحتوي على سعة المفتاح من البتات، البصمة، والحساب والمُضيف الذي أنشئت له، والخوارزمية المُستخدمة: 4096 8e:c4:82:47:87:c2:26:4b:68:ff:96:1a:39:62:9e:4e demo@test (RSA) نسخ مفتاح SSH العام إلى الخادوم مع SSH-Copy-ID لنسخ مفتاحك العام إلى الخادوم، بغرض الاستيثاق بدون كلمة مرور، سنتخذ بعض الإجراءات. إذا كنت حالياً تمتلك وصولا إلىSSH عن طريق كلمة مرور مضبوطاً على الخادوم، وتمتلك أداة ssh-copy-id مثبّتة، فهذه العمليّة بسيطة. أداة ssh-copy-id تأتي مضمّنة على حزم OpenSSH في كثير من توزيعات لينكس، لذلك فمن المُحتمل أن تكون لديك افتراضيا. إذا كنت تملك هذا الخيّار، يُمكنك بسهولة نقل مفتاحك العام باستعمال: ssh-copy-id username@remote_host سيُطلب منك إدخال كلمة مرور المُستخدم على الجهاز البعيد: The authenticity of host ‘111.111.11.111 (111.111.11.111)’ can’t be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed – if you are prompted now it is to install the new keys demo@111.111.11.111’s password: بعد كتابة كلمة المرور، مُحتوى مفتاح ssh/id_rsa.pub./~ سوف يُلحق إلى آخر ملف ssh/authorized_keys./~ الخاصّ بحساب المُستخدم: Number of key(s) added: 1 Now try logging into the machine, with: "ssh ‘demo@111.111.11.111’" and check to make sure that only the key(s) you wanted were added. يُمكنك الآن الدّخول إلى الحساب بدون كلمة مرور: ssh username@remote_host نسخ مفتاح SSH العام إلى خادوم بدون SSH-Copy-ID إذا لم تكن تملك أداة ssh-copy-id، لكنك لا زلت تملك وصولا إلى الخادوم البعيد بكلمة مرور، يُمكنك نسخ محتويات المفتاح العام بطريقة مختلفة. يُمكنك إرجاع مُحتويات المفتاح وتمريرها إلى أمر SSH، في الجهة البعيدة يُمكنك التأكد إذا ما كان مجلّد ssh./~ موجوداً، وبعد ذلك ألحق المحتوى المُمَرّر إلى ملفّ ssh/authorized_keys./~: cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" سيُطلب منك كتابة كلمة المرور للحساب البعيد: The authenticity of host ‘111.111.11.111 (111.111.11.111)’ can’t be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes demo@111.111.11.111’s password: بعد إدخال كلمة المرور، سيُنسخ مفتاحك، متيحاً لك الاتصال بدون كلمة مرور: ssh username@remote_IP_host نسخ مفتاح SSH العام إلى خادوم يدويا إذا لم تكن تملك وصولا عن طريق كلمة مرور، ستحتاج لإضافة مفتاحك العام إلى الخادوم البعيد يدويّاً. على جهازك المحليّ، يُمكنك إيجاد محتويات ملفّ مفتاحك العام بكتابة: cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test يُمكنك نسخ هذه القيمة، ولصقها يدويّاً في المكان المناسب على الخادوم البعيد. يجب عليك أن تتّصل بالخادوم بوسيلة مختلفة. على الخادوم البعيد، أنشئ مجلّد ssh./~ إذا لم يكن موجوداً من قبل: mkdir -p ~/.ssh بعد ذلك، يُمكنك إنشاء أو إلحاق ملفّ ssh/authorized_keys./~ بكتابة: echo سلسلة_المفتاح_العام >> ~/.ssh/authorized_keys يجب عليك الآن أن تتمكّن من الدّخول إلى الخادوم بدون كلمة مرور عبر أمر ssh: ssh username@remote_IP_host ترجمة -مع شيءٍ من التصرّف- للقسم الأول من مقال: SSH Essentials: Working with SSH Servers, Clients, and Keys.
-
تنفيق النقل (أي نقله) عبر نفق SSH آمن (SSH Tunnel)، هو طريقة ممتازة للعمل حول إعدادات جدار ناري تقييدي خاص بـ SSH. ويُعتبر أيضا طريقة رائعة لتشفير أو فك تشفير نقل الشّبكة (network traffic). ضبط تنفيق محلي إلى خادوميُمكن استخدام اتّصالات SSH لتنفيق النقل (أي نقل البيانات عبر أنفاق) من المنافذ على المُضيف المحلي إلى منافذ أخرى على مُضيف بعيد. أوّلاً، يُؤسَّس اتّصال SSH مع المُضيف البعيد. أمّا على الخادوم البعيد، يتم إنشاء اتّصال إلى عنوان شبكة خارجيّة (أو داخليّة) مُقدّم من المُستخدم، والنّقل إلى هذا الموقع يُنفّق (أي يستخدم نفقا) إلى الحاسوب المحلي على منفذ مُحدّد. هذا الأمر يُستخدم عادة للتنفيق نحو بيئة شبكية أقل تقييدا لتجاوز جدار ناري (الأمر أشبه بـآلية عمل VPN)، أي أن هناك طرفا ثالثا (كالبروكسي أو خادوم في منتصف الطريق يمر عليه نقل الشبكة Network traffic). ويُستعمل أيضا بشكل شائع للوصول إلى واجهة ويب من نوع 'مُضيف محلي فقط' من مكان بعيد. لإنشاء نفق محلي نحو الخادوم البعيد، ستحتاج إلى استخدام مُعامل L- عند الاتّصال ويجب عليك توفير 3 معلومات إضافية: المنفذ المحلي الذي ترغب في الوصول إلى الاتّصال المُنفّق منه.المُضيف الذي ترغب في أن يتصل به المُضيف البعيد.المنفذ الذي تريد أن يتصل منه المُضيف البعيد. وهي مُعطاة بالترتيب أعلاه (مُفرّقة بنقطتين بين كل منها) كقيم للمعامل L-. وسنستخدم أيضا المُعامل f- الذي يُحيل SSH للعمل في الخلفيّة قبل التشغيل، وكذلك المُعامل N-، الذي لا يفتح شلّا أو يُنفذ برنامجا على الجهة البعيدة. على سبيل المثال، للاتّصال بـ example.com على المنفذ رقم 80 على المُضيف البعيد، متيحا الاتّصال على جهازك المحلي عبر المنفذ رقم 8888، يُمكنك أن تكتب الآتي: ssh -f -N -L 8888:example.com:80 username@remote_host إذا قمت بالدّخول إلى 127.0.0.1:8888 على مُتصفّحك المحلي، ستحصل على محتوي example.com من المنفذ رقم 80. تركيب جملة أعمّ يُمكن أن يكون كالتّالي: ssh -L your_port:site_or_IP_to_access:site_port username@host بما أنّ الاتّصال يتم في الخلفّية يجب عليك إيجاد رقم PID لقتله (إغلاقه)، يُمكنك فعلُ ذلك بالبحث عن المنفذ الذي وضّفته: ps aux | grep 8888 1001 5965 0.0 0.0 48168 1136 ? Ss 12:28 0:00 ssh -f -N -L 8888:example.com:80 username@remote_host 1001 6113 0.0 0.0 13648 952 pts/2 S+ 12:37 0:00 grep --colour=auto 8888 يُمكنك بعدها قتلُ العمليّة باستهداف رقم PID، وهو الرقم على العمود الثّاني الذّي يُوافق أمر SSH : kill 5965 هناك خيّار آخر وهو بدء الاتّصال بدون المُعامل f-. الأمر الذي سيُبقي الاتّصال في الواجهة، مانعاً استخدام نافذة الطّرفية كامل مدّة الإحالة. والإفادة هنا هي إمكانية إيقاف النّفق بالضّغط على "CTRL-C”. ضبط تنفيق بعيد إلى خادوميُمكن استعمال اتّصالات SSH لتنفيق النّقل من منافذ على المُضيف المحليّ إلى منافذ على المُضيف البعيد. الاتّصال يُخلق نحو مُضيف بعيد على النفق البعيد، خلال إنشاء النّفق يُحدّد رقم منفذ بعيد. هذا المنفذ على المُضيف البعيد سيُنفّق نحو مُضيف ومنفذ مربوطين من الجهاز المحليّ. هذا سيُخوّل الحاسوب البعيد للوصول إلى مُضيف عبر جهازك المحليّ. يُمكنُ لهذا أن يكونَ مُفيداً إذا احتجتَ للسّماح بالوصول إلى شبكة داخليّة مُغلقة نحو اتّصالات خارجيّة. إذا كان الجدار النّاري يسمح بالاتّصالات خارج الشّبكة فإنّ هذا سيُخولُ لك الاتّصال إلى جهاز بعيد ونفق نقل من ذلك الجهاز نحو مكان على الشبكة الدّاخليّة. لإنشاء نفق بعيد نحو خادومك البعيد، ستحتاج إلى تمرير المعامل R- عند الاتّصال ويجب عليك توفير 3 معلومات إضافيّة: رقم المنفذ الذي يُمكن للمُضيف البعيد أن يصل إلى الاتّصال المُنفّق منه.المُضيف الذي ترغب في أن يتّصل به جهازك المحلي.المنفذ الذي ترغب في أن يتّصل منه جهازك المحليّ. وهي مُعطاة بالترتيب أعلاه (مُفرّقة بنقطتين بين كل منها) كقيم للمعامل R-. وسنستخدم أيضا المُعامل f- الذي يُحيل SSH للعمل في الخلفيّة قبل التشغيل، وكذلك المُعامل N-، الذي لا يفتح شلّا (shell) أو يُنفذ برنامجا على الجهة البعيدة. على سبيل المثال، للاتّصال ب example.com على المنفذ رقم 80 على المُضيف المحليّ، متيحا الاتّصال على الجهاز البعيد عبر المنفذ رقم 8888، يُمكنك أن تكتب الآتي: ssh -f -N -R 8888:example.com:80 username@remote_host إذا قمت بالدّخول إلى 127.0.0.1:8888 على مُتصفّح الخادوم، ستحصل على محتوي example.com من المنفذ رقم 80. تركيب جملة أعمّ يُمكن أن يكون كالتّالي: ssh -R your_port:site_or_IP_to_access:site_port username@host بما أنّ الاتّصال يتم في الخلفّية يجب عليك إيجاد رقم PID لقتله (إغلاقه)، يُمكنك فعلُ ذلك بالبحث عن المنفذ الذي وضّفته: ps aux | grep 8888 1001 5965 0.0 0.0 48168 1136 ? Ss 12:28 0:00 ssh -f -N -L 8888:example.com:80 username@remote_host 1001 6113 0.0 0.0 13648 952 pts/2 S+ 12:37 0:00 grep --colour=auto 8888 يُمكنك بعدها قتلُ العمليّة باستهداف رقم PID، وهو الرقم على العمود الثّاني الذّي يُوافق أمر SSH : kill 5965 هناك خيّار آخر وهو بدء الاتّصال بدون المُعامل f-. الأمر الذي سيُبقي الاتّصال في الواجهة، مانعاً استخدام نافذة الطّرفية كامل مدّة الإحالة. والإفادة هنا هي إمكانية إيقاف النّفق بالضّغط على "CTRL-C”. ضبط تنفيق ديناميكي نحو خادوم بعيديُمكن استعمال اتّصالات SSH لتنفيق النّقل من منافذ على المُضيف المحليّ إلى منافذ على المُضيف البعيد. النّفق الديناميكي مُماثل للنّفق المحليّ من حيث أنّه يُخول الجهاز المحلي للاتّصال بموارد أخرى عبر مُضيف بعيد. يقوم النّفق الديناميكي بهذا ببساطة عبر تحديد منفذ محلي واحد. التطبيقات التي ترغب في أن تستغلّ الفرصة للتنفيق من هذا المنفذ يجب أن تكون قادرة على التواصل باستخدام بروتوكول SOCKS ليُعاد توجيه الحزم بنجاح على الجانب الآخر من النّفق. النّقلُ المُمَرّر نحو المنفذ المحلي سيُرسَلُ إلى المُضيف البعيد. من هناك سيُترجم بروتوكول SOCKS لإنشاء اتّصالٍ نحو النهاية المرغوبة. هذا الضّبط يسمح لتطبيق من نوع SOCKS-capable بالاتّصال بأي عدد من الأماكن عبر خادوم بعيد بدون أنفاق ساكنة مُتعدد لإنشاء الاتّصال. سنُمرّر المُعامل D- مع رقم المنفذ المحلي الذي نرغب أن نصل إلى النّفق منه. وسنستخدم أيضا المُعامل f- الذي يُحيل SSH للعمل في الخلفيّة قبل التشغيل، وكذلك المُعامل N-، الذي لا يفتح شلّا أو يُنفذ برنامجا على الجهة البعيدة. على سبيل المثال، لإنشاء اتّصال مع نفق على المنفذ "7777” سنكتب الأمر: ssh -f -N -D 7777 username@remote_host يُمكنك الآن أن تبدأ توجيه تطبيق SOCKS-aware (كمُتصفح الويب)، نحو المنفذ الذي اخترته سيرسل التّطبيق معلوماته إلى المقبس المربوط مع المنفذ. طريقة توجيه النّقل نحو منفذ SOCKS تختلف حسب التّطبيق، في فايرفوكس Firefox على سبيل المثال الموقع العام هو: Preferences > Advanced > Settings > Manual proxy configurations أما في Chrome فتستطيع تشغيل التطبيق مع تحديد مُعامل –proxy-server= . سترغب في استخدام واجهة المُضيف المحلي (localhost interface ) ورقم المنفذ الذي أحَلْتَه. بما أنّ الاتّصال يتم في الخلفّية يجب عليك إيجاد رقم PID لقتله (إغلاقه)، يُمكنك فعلُ ذلك بالبحث عن المنفذ الذي وضّفته: ps aux | grep 8888 1001 5965 0.0 0.0 48168 1136 ? Ss 12:28 0:00 ssh -f -N -D 7777 username@remote_host 1001 6113 0.0 0.0 13648 952 pts/2 S+ 12:37 0:00 grep --colour=auto 8888 يُمكنك بعدها قتلُ العمليّة باستهداف رقم PID، وهو الرقم على العمود الثّاني الذّي يُوافق أمر SSH : kill 5965 هناك خيّار آخر وهو بدء الاتّصال بدون المُعامل f-. الأمر الذي سيُبقي الاتّصال في الواجهة، مانعاً استخدام نافذة الطّرفية كامل مدّة الإحالة. والإفادة هنا هي إمكانية إيقاف النّفق بالضّغط على "CTRL-C”. استعمال شيفرات الإلغاء للتحكم بالاتّصالاتحتى عند إنشاء جلسة SSH، يُمكن التحكم في الاتّصال من داخل الطرفيّة. يُمكن القيام بهذا مع شيء اسمه "شيفرات الإلغاء (SSH escape codes)” والتي تُخوّل لنا التّفاعل مع تطبيق SSH المحلي من داخل الجلسة. إجبار إلغاء الاتّصال من جهة العميل (كيف تخرج من جلسة مُتجمّدة لا تقبل الإجابة)تعتبر إمكانيّة التحكم في جوانب مُعيّنة من الجلسة بالدّاخل من أهم مُميّزات OpenSSH التي غالبا ما لا يُلاحظها الكثيرون. يُمكن تشغيل هذه الأوامر بتقديمها برمز التحكم "~" داخل جلسة SSH. ستُفسّرُ أوامر التحكم فقط إذا كانت أول شيء مكتوب بعد سطر جديد، لذلك اضغط دائما على ENTER مرّة أو مرّتين كإجراء احتياطي. من أكثر الإمكانيات التي يُتيحها التحكم قوة هي إمكانية إلغاء الاتّصال من جهة العميل. اتّصالات SSH عادة ما تُغلق من طرف الخادوم، لكنّ هذا يُمكن أن يكون مُشكلة إذا كانت هناك مشاكل في الخادوم أو إذا قُطع الاتّصال. يُمكن أن تُغلق الاتصال بشكل نظيف من جهة العميل. لإغلاق اتّصال من العميل، استخدم رمز التحكم "~”، مع إضافة نقطة "." . إذا كانت هناك مشاكل في الاتّصال في الغالب ستجد نفسك مع جلسة طرفيّة مُتجمّدة. اكتب الأمر ولو لم تشعر بأنك تكتب شيئا: [ENTER] ~. يجب على الاتّصال أن يُغلق فورا، وسيرجعك إلى جلسة الشل المحليّة. وضع جلسة SSH في الخلفيّةتعتبر إمكانيّة التحكم في جوانب مُعيّنة من الجلسة بالدّاخل من أهم مُميّزات OpenSSH التي غالبا ما لا يُلاحظها الكثيرون. يُمكن تشغيل هذه الأوامر بتقديمها برمز التحكم "~" داخل جلسة SSH. ستُفسّرُ أوامر التحكم فقط إذا كانت أول شيء مكتوب بعد سطر جديد، لذلك اضغط دائما على ENTER مرّة أو مرّتين كإجراء احتياطي. يُعطينا التحكم إمكانية وضع جلسة SSH لتعمل في الخلفيّة. وللقيّام بذلك سنحتاج إلى كتابة رمز التحكم "~" وننفّذ بعده اختصار لوحة المفاتيح (CTRL-Z) لوضع العمليّة في الخلفيّة : [ENTER] ~[CTRL-Z] ما قمنا به سينقل الاتّصال ليعمل في الخلفيّة، وسيرجعنا إلى جلسة الشل المحليّة. للرجوع إلى جلسة SSH يُمكنك استعمال آليّة التّحكم. يُمكنك إعادة تفعيل آخر عمليّة محالة إلى الخلفية بكتابة: fg إذا كنت تملك أكثر من عمليّة في الخلفيّة، يُمكنك رؤية العمليّات المتاحة بكتابة: jobs [1]+ Stopped ssh username@some_host [2] Stopped ssh username@another_host يُمكنك بعد ذلك جلب أي عمليّة إلى الأمام باستعمال الدليل في العمود الأول مع رمز % : fg %2تعديل إعدادات إحالة منفذ على اتّصال SSH موجودتعتبر إمكانيّة التحكم في جوانب مُعيّنة من الجلسة بالدّاخل من أهم مُميّزات OpenSSH التي غالبا ما لا يُلاحظها الكثيرون. يُمكن تشغيل هذه الأوامر بتقديمها برمز التحكم "~" داخل جلسة SSH. ستُفسّرُ أوامر التحكم فقط إذا كانت أول شيء مكتوب بعد سطر جديد، لذلك اضغط دائما على ENTER مرّة أو مرّتين كإجراء احتياطي. هذه الميّزة تسمح لنا بالتعديل على إعدادات إحالة المنفذ بعد أن يؤسّس بالفعل اتّصال مُسبق، ويُخوّل لك إنشاء أو هدم قواعد إحالة منفذ في الوقت الفعلي. هذه القدرات جزء من واجهة سطر أوامر SSH، ويُمكن الوصول إليها خلال الجلسة باستخدام رمز التّحكم (~) و"C" : [ENTER] ~C ssh> سوف تُمنَح موجه أوامر خاص بSSH، موجه الأوامر هذا يتيح مجموعة محدودة جدّا من الأوامر، يمكنك كتابة h- من الموجه لرؤية الخيّارات المتاحة. إذا كانت المُخرجات خاليّة، سيجب عليك زيادة إسهاب (verbosity) مخرجات SSH باستخدام v~ عدّة مرّات: [ENTER] ~v ~v ~v ~C -hCommands: -L[bind_address:]port:host:hostport Request local forward -R[bind_address:]port:host:hostport Request remote forward -D[bind_address:]port Request dynamic forward -KL[bind_address:]port Cancel local forward -KR[bind_address:]port Cancel remote forward -KD[bind_address:]port Cancel dynamic forwardوكما ترى، يُمكنك بسهولة تنفيذ أي من الخيارات باستخدام الخيّار المناسب (اُنظر قسم الإحالة لمزيد من المعلومات). يُمكنك أيضا هدم نفق مع الأمر K- قبل رمز نوع الإحالة. على سبيل المثال، لإغلاق إحالة محليّة (L-)، يمكنك أن تستعمل الأمر KL-. وستحتاج إلى توفير رقم المنفذ. لضبط إحالة منفذ محلي، يمكنك استعمال: [ENTER] ~C -L 8888:127.0.0.1:80 يستطيع المنفذ 8888 على جهازك المحلي الآن التواصل مع خادوم الويب على المُضيف الذي تتصلُ به. عندما تنتهي، يُمكنك أن تهدم الإحالة بكتابة: [ENTER] ~C -KL 8888خاتمةالتعليمات أعلاه يجب أن تغطي مُعظم ما يحتاجه المستخدمون عن SSH. إذا كان لديك أي نصائح أخرى أو إذا رغبت في نشر الإعدادات والطّرق المُفضّلة لديك، خذ راحتك ولا تتردد في استخدام التعليقات أدناه. ترجمة -مع شيءٍ من التصرّف- للقسم الثالث والأخير من مقال: SSH Essentials: Working with SSH Servers, Clients, and Keys. حقوق الصورة البارزة: Designed by Freepik.
-
هذا القسم سيُغطّي بعضاً من أساسيّات الاتّصال بخادوم مع SSH، وهو تكملة لسلسلة "مدخل إلى ssh"، بعد أن تكلمنا في الدرس الأول منها عن العملاء والمفاتيح. الاتصال بخادوم عن بعدللاتّصال بخادوم عن بعد وفتح جلسة طرفية هناك، يمكنك استعمال أمر ssh. أبسط طريقة تفترض أنّ اسم المُستخدم الخاصّ بك هو نفسه اسم المُستخدم على الخادوم، إذا كان هذا صحيحاً، يُمكنك الاتّصال باستخدام: ssh remote_host إذا كان اسم المُستخدم مختلفاً على الخادوم، ستحتاج إلى تمرير اسم مستخدم الخادوم كالتالي: ssh username@remote_host في المرة الأولى التّي تتصل بمُضيف جديد، سترى رسالة تبدو كالتّالي: The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yesاكتب yes لإكمال الاتّصال بالمُضيف. إذا كنت تستخدم فحص لكلمة المرور، سيُطلب منك إدخالها هنا. إذا كنت تستخدم مفاتيح SSH، سيُطلب منك إدخال كلمة المُرور لمفتاحك الخاصّ إذا كنت قد عيّنتها من قبل، إذا كان الأمر غير ذلك فستدخل آلياً إلى الخادوم. تشغيل أمر واحد على الخادوم البعيدلتشغيل أمر واحد على الخادوم عن بعد عوضا عن فتح جلسة طرفية، يُمكنك إضافة الأمر بعد معلومات الاتّصال: ssh username@remotehost الأمرالمُراد_تشغيله هذا الأمر سيقوم بالاتصال بالخادوم، ثم يستثيق باستخدام المعلومات وينفّذ الأمر الذي حدّدته. وسيُغلق الاتّصال مُباشرة بعد ذلك. الدخول إلى خادوم من منفذ آخريقوم عفريت SSH (بالانجليزية: ssh daemon وهو برنامج يعمل في الخلف بشكل دائم على النظام) بالدّخول إلى الخادوم من المنفذ رقم 22 تلقائيّاً. عميل SSH الخاص بك سيفترض أن هذه هي الحالة عند مُحاولة الاتّصال. إذا كان خادوم SSH يستمع من منفذ غير معياريّ (سيُشرح الأمر لاحقا في قسم آخر)، سيجب عليك تحديد رقم المنفذ الجديد عند محاولة الدّخول. يُمكنك فعل هذا بتحديد رقم المنفذ مع خيّار p-: ssh -p رقم_المنفذ username@remote_host لتجنّب فعل هذا في كلّ مرة تدخلُ إلى الخادوم، يُمكنك إنشاء أو تعديل ملفّ إعدادات في مُجلّد ssh./~ داخل مُجلّد المنزل في جهازك المحليّ. عدّل أو أنشئ الملفّ بكتابة: nano ~/.ssh/config يُمكنك هنا تحديد إعدادات خيارات المُضيف. لتحديد منفذ جديد، استخدم نموذجاً كالتّالي: Host remote_alias HostName remote_host Port port_num هذا سيُمكّنك من الدّخول إلى الخادوم بدون تحديد رقم المنفذ كلّ مرة من سطر الأوامر. إضافة مفاتيح SSH إلى عميل SSH لتجنب كتابة كلمة المرورإذا كنت تمتلك جملة مرور على المفتاح الخاص، سيُطلب منك كتابتها في كلّ مرة تحاول الاتّصال بالمُضيف. لتجنّب الأمر، يُمكنك تشغيل عميل SSH. وهو أداة صغيرة تُخزّن مفتاحك الخاص بعد كتابة كلمة المرور للمرّة الأولى. وستكون مُتاحة طوال مدة جلسة الطّرفيّة، وستخوّل لك الاتصال بدون إعادة كتابة كلمة المرور في المستقبل. هذا الأمر مهم أيضا إذا كنت تريد إحالة معلومات SSH الخاصّة بك (مُبيّنٌ أدناه). لتشغيل عميل SSH، اكتب في جلسة طرفيّة جهازك المحلي: eval $(ssh-agent)هذا الأمر سيُشغّل عميل SSH في الخلفيّة. الآن عليك أن تُضيف مفتاحك الخاصّ إلى العميل لكي يتمكن من إدارتها: ssh-add Enter passphrase for /home/demo/.ssh/id_rsa: Identity added: /home/demo/.ssh/id_rsa (/home/demo/.ssh/id_rsa) سيتوجب عليك كتابة كلمة المرور (في حال عيّنتها). بعدئذٍ ملف الهوية الخاص بك سيُضاف إلى العميل متيحا لك استخدام مفتاحك بدون إعادة إدخال كلمة المرور مُجدّداً. إحالة معلومات SSH الخاصة بك لاستخدامها على خادومإذا كنت ترغب في أن تكون قادراً على الاتّصال بدون كلمة مرور من خادوم إلى آخر، سيتوجب عليك إحالة معلومات SSH الخاصّة بك. ما يخوّلك للاتّصال بخادوم آخر من الخادوم الذي تتّصل به، باستخدام المعلومات على جهازك المحلي. للبدء يجب عليك أن تمتلك عميل SSH مُشغلا ومضافٌ إليه مفتاح SSH الخاص بك (انظر أعلاه). بعد الانتهاء من هذا، ستحتاج إلى الاتّصال بالخادوم الأول باستعمال خيّار A-. هذا الأمر يحيل معلوماتك إلى الخادوم للجلسة الحالية: ssh -A username@remote_host من الآن يُمكنك الاتصال بمُضيف جديد مُخوّل له الوصول من مفتاح SSH وسوف تدخل كما لو أن مفتاحك الخاص موجود على الخادوم. إعدادات جهة الخادوم Server-Sideهذا القسم يحتوي على بعض من أشهر خيارات إعدادات جهة الخادوم التي يمكن لها تشكيل طريقة استجابة الخادوم وأي من أنواع الاتّصال المسموح بها. تعطيل فحص كلمة مرورإذا كنت قد ضبطت مفاتيح SSH واختبرتها وتعاملت بها بشكل جيّد، يعتبر تعطيل الفحص بكلمة المرور فكرة جيّدة، هذا سيمنع أي مُستخدم من الاتصال باستخدام SSH مع كلمة مرور. لفعل هذا، اتصل بخادومك وافتح ملفّ etc/ssh/sshd_config/ بصلاحيّات الجذر: sudo nano /etc/ssh/sshd_config ابحث داخل الملفّ عن PasswordAuthentication إذا كانت تعليقا أزل رمز التعليق واجعلها no لتعطيل الدخول بكلمة المرور: PasswordAuthentication no بعد أن تقوم بالتغيير، احفظ وأغلق الملف. يجب عليك إعادة تشغيل خدمة SSH لتطبيق التغييرات. على أبنتو/دبيان: sudo service ssh restart على فيدورا / CentOS: sudo service sshd restart الآن جميع الحسابات على النظام ستمنع من الدّخول باستخدام كلمة مرور. تغيير منفذ عفريت SSH (بالانجليزية: ssh daemon)ينصح بعض الإداريين بتغيير منفذ SSH الافتراضي، يمكن لهذا أن يعين في تقليل عدد محاولات الاتّصال إلى خادومك من قبل البرمجيات الخبيثة. لتغيير المنفذ، سيتوجب عليك الدخول إلى الخادوم الخاص بك. ثم افتح ملفّ sshd_config على الخادوم بصلاحيات الجذر: sudo nano /etc/ssh/sshd_config عندما تدخل، يمكنك تغيير المنفذ الذي يشتغل منه SSH بإيجاد مواصفة Port 22 وتغييرها إلى رقم المنفذ الذي تريد استخدامه. مثلاً لتغيير المنفذ إلى 4444، ضع هذا في ملفّك: Port 4444 احفظ وأغلق الملفّ عندما تنتهي. يجب عليك إعادة تشغيل SSH لتطبيق التغييرات: على أبنتو/دبيان: sudo service ssh restart على فيدورا/سنت أو إس: sudo service sshd restart بعد إعادة التّشغيل ستحتاج إلى إلى الفحص بتحديد رقم المنفذ (شُرح سابقاً) تحديد المستخدمين الذين يمكن لهم الاتّصال عبر SSHيُمكنك اتّخاذ خذ بعض الإجراءات لتحديد المُستخدمين الذين يمكنهم الاتّصال عبر SSH، ويمكن ذلك عبر تعديل ملفّ إعدادات SSH. افتح هذا الملف على الخادوم بصلاحيات الجذر: sudo nano /etc/ssh/sshd_config الطريقة الأولى لتحديد المستخدمين الذين يمكن لهم الاتّصال هي عبر خاصّية AllowUsers . ابحث عن AllowUsers في الملفّ. إذا لم يكن السّطر موجودا فأنشئه في أي مكان. أدرج بعدها اسماء المستخدمين المرغوب في السّماح لهم بالاتّصال عبر SSH: AllowUsers user1 user2 احفظ وأغلق الملفّ. أعد تشغيل SSH لتطبيق التغييرات. على أبنتو/دبيان: sudo service ssh restart على فيدورا/سنت أو إس: sudo service sshd restart إذا كنت مرتاحا مع إدارة المجموعات أكثر، يُمكنك استعمال AllowGroups . في حال كنت ترغب في ذلك أضف المجموعة التي سيُسمح لها بالاتصال (سوف ننشئ هذه المجموعة وسنضيف إليها الأعضاء بعد قليل): AllowGroups sshmembers احفظ وأغلق الملفّ. يُمكنك الآن إنشاء مجموعة (بدون مجلد منزل) توافق المجموعة التّي حدّدتها بكتابة: sudo groupadd -r sshmembersتأكّد من أنّك أضفت حساب المستخدم الذي تريد إلى هذه المجموعة. يُمكن القيام بالأمر كالتالي: sudo usermod -a -G sshmembers user1 sudo usermod -a -G sshmembers user2 أعد تشغيل SSH لتطبيق التّغييرات. على أبنتو/دبيان: sudo service ssh restart على فيدورا/سنت أو إس: sudo service sshd restart تعطيل ولوج الجذر rootيعد تعطيل ولوج الجذر عبر SSH منصوحا به بعد أن تضبط حساب مستخدم بميزة sudo. لفعل ذلك، افتح على الخادوم ملف إعدادات SSH باستخدام الجذر أو مع sudo . sudo nano /etc/ssh/sshd_configابحث عن PermitRootLogin إذا كانت تعليقا أزل رمز التعليق واجعلها no: PermitRootLogin noاحفظ الملف وأغلق الملف وأعد تشغيل SSH لتطبيق التّغييرات. على أبنتو/دبيان: sudo service ssh restart على فيدورا/سنت أو إس: sudo service sshd restart إتاحة وصول الجذر لأوامر معينةهناك بعض الحالات التي قد ترغب فيها بتعطيل وصول الجذر عامّة، والسّماح لبرمجيّات معيّنة للوصول إليه لتعمل بشكل صحيح، ويُمكنك أن تأخذ النّسخ الاحتياطي كمثال. يُمكن القيّام بهذه العملية عبر ملف authorized_keys الخاصّ بمستخدم الجذر، الذي يحتوي على المفاتيح المُخوّلِ لها استخدام الحساب. أضف المفتاح الذي ترغب في استعماله من جهازك المحلي (يُنصح بإنشاء مفتاح جديد لكل عملية تلقائيّة ) إلى ملفّ authorized_keys الخاصّ بمستخدم الجذر على الخادوم. سنشرح مع أمر ssh-copy-id هنا، لكنك تستطيع أي طريقة أخرى للنسخ المفاتيح (ستُشرح في قسم آخر): ssh-copy-id root@remote_host ادخل الآن إلى الخادوم البعيد، سنحتاج إلى ضبط الدّخول على ملفّ authorized_keys لذلك افتحه باستخدام الجذر أو مع sudo. sudo nano /root/.ssh/authorized_keys في بداية سطر المفتاح الذي نسخته، أضف =command لكي تُعرّف الأمر الذي يصلح له المفتاح. يجب أن يتضمن مسار الملف القابل للتنفيذ مع أي معامل: command="/path/to/command arg1 arg2" ssh-rsa احفظ وأغلق الملفّ عندما تنتهي. افتح ملفّ sshd_config باستخدام الجذر أو مع sudo: sudo nano /etc/ssh/sshd_config ابحث عن PermitRootLogin وغيّر القيمة إلى forced-commands-only.هذه العمليّة ستسمح للمفاتيح باستخدام الجذر فقط عند تحديد أمر للمفتاح: PermitRootLogin forced-commands-onlyاحفظ الملف وأغلق الملف وأعد تشغيل SSH لتطبيق التّغييرات. على أبنتو/دبيان: sudo service ssh restart على فيدورا/سنت أو إس: sudo service sshd restart إحالة تطبيق X لعرضه للعميليُمكن ضبط SSH لإحالة تطبيقات X وعرضها على الجهاز المحلي تلقائيّاً. لينجح الأمر يجب على العميل امتلاك مدير نوافذ X مضبوط ومتاح. لاتاحة هذه الوظيفة ادخل إلى الخادوم البعيد وعدّل ملفّ sshd_config باستخدام حساب الجذر أو مع sudo: sudo nano /etc/ssh/sshd_config ابحث عن X11Forwarding إذا كانت تعليقا أزل رمز التعليق ومرّر القيمة yes: X11Forwarding yes احفظ الملف وأغلق الملف وأعد تشغيل SSH لتطبيق التّغييرات. على أبنتو/دبيان: sudo service ssh restart على فيدورا/سنت أو إس: sudo service sshd restart للاتّصال بالخادوم وإحالة عرض تطبيق ما، يجب عليك تمرير مُعامل X- من جهة العميل عند الاتصال: ssh -X username@remote_host التطبيقات الرسوميّة المفتوحة على الخادوم في الجلسة الحاليّة يجبُ أن تُعرض على الجهاز المحلي. يُمكن أن يكون الأداء بطيئا قليلاً، لكنّه جيد ومجدي في بعض الحالات. خيارات إعدادات جهة العميلفي هذا القسم، سنركّز على بعض التعديلات التي يُمكنك القيّام بها على جهة العميل من الاتّصال. تحديد خصائص معلومات الاتّصال بالخادوميُمكنك تحديد إعدادات على جهازك المحلي لبعض أو لجميع الخوادم التي تتصل بها. ويُمكن تخزينُ هذه الإعدادات على ملفّ ssh/config./~ والذي يُمكن قراءته من طرف عميل SSH في كل مرة يُستدعى فيها. أنشئ أو افتح الملفّ بمحرّر نصوص على جهازك المحليّ: nano ~/.ssh/config يُمكنك تحديد الإعدادات التي ترغب فيها بداخل هذا الملف بتقديم كل منها مع كلمة Host متبوعة بكنية (alias). وتحت السّطر يُمكنك تحديد أي من التّعليمات الموجودة على صفحة man ssh_config بشرط أن تكون بمسافة بادئة: man ssh_config كمثال عن الإعدادات: Host testhost HostName example.com Port 4444 User demo يُمكنك بعد ذلك الاتّصال ب example.com على المنفذ 4444 باستخدام اسم المُستخدم “demo” بكتابة: ssh testhostيُمكنك أيضاً استخدام حروف البدل (wildcards) لموافقة أكثر من مُضيف. تذكّر أن الموافقات اللاحقة يُمكنها الكتابة فوق السّابقة، لذلك يجب عليك أن تضع الموافقات العامّة في الأعلى. على سبيل المثال، يمكنك أن تعطل إحالة X بشكل افتراضي لجميع الاتصالات، بوضع التالي في ملفّك: Host * ForwardX11 no Host testhost HostName example.com ForwardX11 yes Port 4444 User demo احفظ وأغلق الملفّ عندما تنتهي. إبقاء الاتّصالات حيّة لتجنّب نفاذ الوقت (Timeout)إذا وجدت نفسك خارج جلسة SSH قبل أن تكون جاهزا لذلك، من المُحتمل أنّ وقت الاتّصال ينفذ. يُمكنك ضبط العميل لإرسال حزمة إلى الخادوم بين الحين والآخر لتجنّب هذه المسألة: يُمكنك ضبط هذا على جهازك المحليّ لكل اتّصال بتعديل ملفّ ssh/config./~. افتح الآن: nano ~/.ssh/config إذا لم تملك سطرا يوافق جميع المضيفين أعلى الملفّ فقم بإضافته. ثم أضف ServerAliveInterval بقيمة "120” لإرسال حزمة إلى الخادوم كلّ دقيقتين. هذا كافٍ لإبلاغ الخادوم بعدم إغلاق الاتّصال: Host * ServerAliveInterval 120 احفظ وأغلق الملفّ عندما تنتهي. تعطيل التحقق من المضيففي الحالة الافتراضية، كلّما اتّصلتَ بخادومٍ جديد، ستُعرضُ لك بصمة مفتاح: SSH. The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes هذا الأمر مضبوط لكي تتأكد من الفحص المُضيف الذي تُحاول الاتّصال به وتجنب إمكانية أن يتنكر مستخدم خبيث في هيئة المُضيف البعيد. قد ترغب في تعطيل هذه الميزة في بعض الحالات. ملاحظة: هذا الأمر يمكن أن يكون خطيرا جدّا أمنيا، لذلك تأكد من أنك تعرف ما تفعله إذا قُمت بضبط النظام هكذا. للقيّام بالأمر، افتح ملفّ ssh/config./~ على جهازك المحليّ: nano ~/.ssh/config إذا لم تملك سطرا يوافق جميع المضيفين أعلى الملفّ فقم بإضافته. ثم أضف StrictHostKeyChecking بقيمة no لإضافة مضيفين جدد تلقائيّا إلى ملفّ known_hosts، وأضف UserKnownHostsFile بقيمة /dev/null/ لعدم التحذير على مُضيف جديد أو مُضيف معدّل: Host StrictHostKeyChecking no UserKnownHostsFile /dev/nullيُمكنك تشغيل التحقق لكل حالة على حدة بعكس هذه الخيّارات لمضيفين آخرين. القيمة الافتراضية ل StrictHostKeyChecking هي "ask”: Host testhost HostName example.com StrictHostKeyChecking ask UserKnownHostsFile /home/demo/.ssh/known_hostsمضاعفة SSH خلال اتصال TCP واحدهناك بعض الحالات التي يُمكن أن يأخذ فيها إنشاء اتّصال TCP وقتا أطول من المعتاد. إذا كنت تقوم باتّصالات متعدّدة إلى نفس الجهاز، يُمكنك استغلال ميّزة المُضاعفة. مُضاعفة SSH تقوم بإعادة استخدام نفس اتّصال TCP لجلسات SSH مُتعدّدة. وبهذا يتجنّب بعض العمل الضروري لإنشاء جلسة جديدة الشيء الذي يسرع الأمر، الحد من عدد الاتّصالات قد يكون مُجديّا أيضا لأسباب أخرى. لإعداد المُضاعفة، يُمكنك إعداد الاتّصالات، أو يُمكنك ضبط العميل لاستعمال المُضاعفة عندما تكون متاحة. سنشرح الخيار الثاني هنا. لإعداد المُضاعفة، عدّل ملف إعدادات عميل SSH على الحاسوب المحلي: nano ~/.ssh/config إذا لم تملك سطرا يوافق جميع المضيفين أعلى الملفّ فقم بإضافته الآن (مثل Host *). سنضبط القيم ControlMaster , ControlPath و ControlPersist لإنشاء إعدادات المُضاعفة. يجب أن يكون ControlMaster بقيمة auto لتخويل المُضاعفة تلقائيّا عندما تكون متاحة. ControlPath سيكون مسار تحكم المقبس. الجلسة الأولى ستنشئ هذا المقبس وستكون الجلسات اللاحقة قادرة على إيجاده لأنه موسوم من طرف المُستخدم، المُضيف والمنفذ. ضبط خيّار ControlPersist مع القيمة 1 ستُخوّلُ اتّصال الرئيس الأولي( initial master) ليعمل في الخلفية. 1 تعني أن اتّصال TCP يجب أن ينتهي بعد ثانية واحدة من إغلاق آخر جلسة SSH: Host * ControlMaster auto ControlPath ~/.ssh/multiplex/%r@%h:%p ControlPersist 1احفظ وأغلق الملفّ عندما تنتهي. نحتاج الآن لإنشاء المجلّد الذي حدّدناه في مسار التحكم: mkdir ~/.ssh/multiplexأي جلسة تُنشئ الآن مع نفس الجهاز ستُحاول استعمال المقبس الموجود واتّصال TCP. عندما تكون آخر جلسة موجودة، سيُهدمُ الاتّصال بعد ثانيّة واحدة. إذا كنت تريد تجنب إعدادات المُضاعفة لسبب ما مؤقتا، يُمكنك فعلُ ذلك بتمرير مُعامل S- مع قيمة none: ssh -S none username@remote_host تحدثنا في هذا الدرس عن كيفية إنشاء إتصال بخادوم بعيد بشكل آمن وبخيارات متعددة سواءً من جهة الخادوم أو من جهة العميل (المستخدم)، سنتحدث في المقال القادم إن شاء الله عن أنفاق ssh، ماهيتها، وكيفية إعدادها. ترجمة -مع شيءٍ من التصرّف- للقسم الثاني من مقال: SSH Essentials: Working with SSH Servers, Clients, and Keys. حقوق الصورة البارزة: Designed by Freepik.