مقدمة
SSH هو بروتوكول آمن يُستخدم كوسيلة أساسية للاتصال بخوادم Linux عن بُعد. يوفر واجهة قائمة على النص عن طريق إنشاء قشرة بعيدة. بعد الاتصال، يتم إرسال جميع الأوامر التي تكتبها في الطرفية المحلية إلى الخادم البعيد وتُنفذ هناك.
في هذا الدليل بنمط ورقة الغش، سنغطي بعض الطرق الشائعة للاتصال بـ SSH لتحقيق أهدافك. يمكن استخدام هذا كمرجع سريع عندما تحتاج إلى معرفة كيفية الاتصال بالخادم الخاص بك أو تكوينه بطرق مختلفة.
نشر تطبيقات الواجهة الأمامية الخاصة بك من GitHub باستخدام منصة DigitalOcean للتطبيقات. دع DigitalOcean تركز على توسيع تطبيقك.
كيفية استخدام هذا الدليل
- اقرأ قسم نظرة عامة على SSH أولاً إذا كنت غير ملم بـ SSH بشكل عام أو إذا كنت بدأت للتو.
- استخدم الأقسام التالية التي تنطبق على ما تحاول تحقيقه. معظم الأقسام لا تعتمد على الأقسام الأخرى، لذا يمكنك استخدام الأمثلة التالية بشكل مستقل.
- استخدم قائمة المحتويات على الجانب الأيسر من هذه الصفحة (عندما يكون عرض الصفحة واسعًا) أو استخدم وظيفة البحث في متصفحك للعثور على الأقسام التي تحتاج إليها.
- انسخ والصق أمثلة الأوامر المعطاة، مستبدلا القيم المميزة بالخاصة بك.
نظرة عامة على SSH
أكثر الطرق شيوعًا للاتصال بخادم Linux عن بُعد هي من خلال SSH. تعني SSH الشل الآمن وتوفر وسيلة آمنة وآمنة لتنفيذ الأوامر وإجراء التغييرات وتكوين الخدمات عن بُعد. عندما تتصل من خلال SSH، تقوم بتسجيل الدخول باستخدام حساب موجود على الخادم عن بُعد.
كيف يعمل SSH
عند الاتصال من خلال SSH، ستدخل في جلسة شل، وهي واجهة قائمة على النص حيث يمكنك التفاعل مع خادمك. خلال جلسة SSH الخاصة بك، يتم إرسال أي أوامر تقوم بكتابتها في الطرفية المحلية الخاصة بك من خلال نفق SSH مشفر وتُنفذ على خادمك.
تم تنفيذ اتصال SSH باستخدام نموذج العميل-الخادم. هذا يعني أنه يجب أن يكون هناك برنامج يعمل على الجهاز البعيد يسمى برنامج خادم SSH لإنشاء اتصال SSH. يستمع هذا البرنامج للاتصالات على منفذ شبكة محدد، ويقوم بالمصادقة على طلبات الاتصال، وينشئ البيئة المناسبة إذا قدم المستخدم بيانات اعتماد صحيحة.
يجب أن يكون لدى كمبيوتر المستخدم عميل SSH. هذا هو برنامج يعرف كيفية التواصل باستخدام بروتوكول SSH ويمكن تزويده بمعلومات حول المضيف البعيد الذي يجب الاتصال به، واسم المستخدم المستخدم، وبيانات الاعتماد التي يجب تمريرها للمصادقة. يمكن للعميل أيضًا تحديد تفاصيل معينة حول نوع الاتصال الذي يرغبون في إنشائه.
كيفية مصادقة المستخدمين في SSH
عادةً ما يقوم العملاء بالمصادقة إما باستخدام كلمات المرور (أقل أمانًا وغير موصى به) أو مفاتيح SSH، والتي تعتبر آمنة للغاية.
تشفر تسجيلات الدخول بكلمات المرور وسهلة الفهم للمستخدمين الجدد. ومع ذلك، ستحاول الروبوتات الآلية والمستخدمون الخبيثون في كثير من الأحيان محاولة مصادقة متكررة على الحسابات التي تسمح بتسجيل الدخول باستخدام كلمة المرور، مما يمكن أن يؤدي إلى تعرض الأمان للمخاطر. لهذا السبب، نوصي دائمًا بإعداد المصادقة على أساس مفتاح SSH لمعظم التكوينات.
مفاتيح SSH هي مجموعة متطابقة من المفاتيح التشفيرية التي يمكن استخدامها للمصادقة. يحتوي كل مجموعة على مفتاح عام ومفتاح خاص. يمكن مشاركة المفتاح العام بحرية دون قلق، بينما يجب حراسة المفتاح الخاص بجدية وعدم تعريضه لأي شخص.
للمصادقة باستخدام مفاتيح SSH، يجب أن يكون للمستخدم زوج من مفاتيح SSH على جهاز الكمبيوتر المحلي. على الخادم البعيد، يجب نسخ المفتاح العام إلى ملف داخل دليل المستخدم في المسار ~/.ssh/authorized_keys
. يحتوي هذا الملف على قائمة من المفاتيح العامة، واحدة لكل سطر، التي يتم تفويضها لتسجيل الدخول إلى هذا الحساب.
عندما يتصل العميل بالخادم، متمنيًا استخدام مصادقة المفتاح SSH، سيبلغ الخادم من هذا النية وسيخبر الخادم أي مفتاح عام يجب استخدامه. يتحقق الخادم بعد ذلك من ملفه authorized_keys
للمفتاح العام، ويولّد سلسلة عشوائية، ويقوم بتشفيرها باستخدام المفتاح العام. لا يمكن فك تشفير هذه الرسالة المشفرة إلا باستخدام المفتاح الخاص المقابل. يرسل الخادم هذه الرسالة المشفرة إلى العميل لاختبار ما إذا كان بالفعل لديه المفتاح الخاص المقابل.
عند استلام هذه الرسالة، يقوم العميل بفك تشفيرها باستخدام المفتاح الخاص ويجمع السلسلة العشوائية التي تظهر مع معرف الجلسة المتفق عليه مسبقًا. ثم يولّد هاش MD5 لهذه القيمة وينقلها إلى الخادم. كان لدى الخادم بالفعل الرسالة الأصلية ومعرف الجلسة، لذا يمكنه مقارنة هاش MD5 تم إنشاؤه بواسطة تلك القيم وتحديد أن العميل يجب أن يكون لديه المفتاح الخاص.
الآن بعد أن تعرف كيف يعمل SSH، يمكننا أن نبدأ في مناقشة بعض الأمثلة لتوضيح طرق مختلفة للعمل مع SSH.
إنشاء والعمل مع مفاتيح SSH
سيغطي هذا القسم كيفية إنشاء مفاتيح SSH على جهاز العميل وتوزيع المفتاح العام إلى الخوادم حيث يجب استخدامه. هذا القسم جيد للبدء به إذا لم تكن قد قمت بإنشاء المفاتيح مسبقًا بسبب الأمان المتزايد الذي يتيحه لاتصالات المستقبل.
إنشاء زوج مفاتيح SSH
إنشاء زوج جديد من المفتاح العام والخاص لـ SSH على جهاز الكمبيوتر المحلي هو الخطوة الأولى نحو المصادقة مع خادم بعيد دون كلمة مرور. ما لم يكن هناك سبب جيد لعدم القيام بذلك، يجب دائمًا المصادقة باستخدام مفاتيح SSH.
A number of cryptographic algorithms can be used to generate SSH keys, including RSA, DSA, and ECDSA. RSA keys are generally preferred and are the default key type.
لإنشاء زوج مفتاح RSA على جهاز الكمبيوتر المحلي الخاص بك، اكتب:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
هذا البرومبت يتيح لك اختيار موقع لتخزين المفتاح الخاص RSA الخاص بك. اضغط ENTER
للإبقاء على الإعداد الافتراضي، والذي سيخزنه في الدليل الخفي .ssh
في دليل المستخدم الخاص بك. ترك الموقع الافتراضي المحدد سيتيح لعميل SSH الخاص بك العثور على المفاتيح تلقائيًا.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
المرحلة التالية تتيح لك إدخال عبارة سرية ذات طول تختاره لتأمين مفتاحك الخاص. بشكل افتراضي، ستضطر إلى إدخال أي عبارة سرية تقوم بتعيينها هنا في كل مرة تستخدم فيها المفتاح الخاص، كإجراء أمان إضافي. لا تتردد في الضغط على ENTER
لترك هذا الحقل فارغًا إذا لم تكن ترغب في وجود عبارة سرية. ومع ذلك، خذ في عين الاعتبار أن هذا سيسمح لأي شخص يتمكن من السيطرة على المفتاح الخاص بالدخول إلى خوادمك.
إذا اخترت إدخال عبارة سرية، فلن يتم عرض أي شيء أثناء كتابتك. هذا تدبير أمني.
OutputYour 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
: المفتاح العمومي المرتبط. يمكن مشاركة هذا بحرية دون أي عواقب.
انشاء زوج مفاتيح SSH بعدد أكبر من البتات
تكون مفاتيح SSH مكونة من 2048 بت بشكل افتراضي. يُعتبر ذلك عادة مقبولا من حيث الأمان، ولكن يمكنك تحديد عدد أكبر من البتات للحصول على مفتاح أكثر صلابة.
للقيام بذلك، قم بتضمين الوسيطة -b
مع عدد البتات التي ترغب فيها. تدعم معظم الخوادم المفاتيح طولا يصل إلى 4096 بت على الأقل. قد لا تتم قبول المفاتيح الأطول لأغراض حماية من هجمات الحجب الخدمي:
إذا كنت قد أنشأت مفتاحًا مختلفًا في السابق، سيُطلَب منك ما إذا كنت ترغب في استبدال المفتاح السابق الخاص بك:
Overwrite (y/n)?
إذا اخترت “نعم”، سيتم استبدال المفتاح السابق الخاص بك ولن تتمكن بعد ذلك من تسجيل الدخول إلى الخوادم باستخدام ذلك المفتاح. لهذا السبب، تأكد من استبدال المفاتيح بحذر.
إزالة أو تغيير عبارة المرور على المفتاح الخاص
إذا كنت قد أنشأت عبارة مرور لمفتاحك الخاص وترغب في تغييرها أو إزالتها، يمكنك القيام بذلك بسهولة.
ملاحظة: لتغيير أو إزالة عبارة المرور، يجب أن تعرف عبارة المرور الأصلية. إذا فقدت عبارة المرور للمفتاح، فليس هناك ما يمكن فعله وسيتعين عليك إنشاء زوج مفاتيح جديد.
لتغيير أو إزالة عبارة المرور، ما عليك سوى كتابة:
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، اكتب:
Enter file in which the key is (/root/.ssh/id_rsa):
يمكنك الضغط على ENTER
إذا كان هذا هو الموقع الصحيح للمفتاح، وإلا فأدخل الموقع المعدل. سيتم منحك سلسلة نصية تحتوي على طول البت للمفتاح، والبصمة، والحساب والمضيف الذي تم إنشاؤه له، والخوارزمية المستخدمة:
Output4096 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 للعديد من توزيعات Linux، لذا من المحتمل جدًا أن يتم تثبيتها افتراضيًا.
إذا كانت لديك هذه الخيارات، يمكنك نقل مفتاحك العام بسهولة عن طريق كتابة:
سيطلب منك هذا إدخال كلمة مرور حساب المستخدم على النظام البعيد:
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
[email protected]'s password:
بعد إدخال كلمة المرور، سيتم إلحاق محتويات مفتاحك ~/.ssh/id_rsa.pub
بنهاية ملف ~/.ssh/authorized_keys
لحساب المستخدم:
OutputNumber of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
يمكنك الآن تسجيل الدخول إلى ذلك الحساب بدون كلمة مرور:
نسخ مفتاح SSH العام إلى خادم بدون استخدام SSH-Copy-ID
إذا لم يكن لديك أداة ssh-copy-id
متاحة، ولكن لديك لا تزال إمكانية الوصول إلى الخادم عبر SSH بناءً على كلمة المرور، يمكنك نسخ محتويات مفتاحك العام بطريقة مختلفة.
يمكنك إخراج محتويات المفتاح وتوجيهها إلى أمر ssh
. على الجانب البعيد، يمكنك التأكد من وجود مجلد ~/.ssh
، ثم إلحاق محتويات الأنبوب بملف ~/.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
[email protected]'s password:
بعد إدخال كلمة المرور، سيتم نسخ مفتاحك، مما يتيح لك تسجيل الدخول بدون كلمة مرور:
نسخ مفتاح SSH العام إلى خادم يدويًا
إذا لم يكن لديك إمكانية الوصول عبر SSH بناءً على كلمة المرور، ستحتاج إلى إضافة مفتاحك العام إلى الخادم عن بُعد يدويًا.
على جهازك المحلي، يمكنك العثور على محتويات ملف المفتاح العام عن طريق الكتابة:
Outputssh-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
يمكنك نسخ هذه القيمة ولصقها يدويًا في الموقع المناسب على الخادم البعيد. ستحتاج إلى تسجيل الدخول إلى الخادم البعيد من خلال وسائل أخرى (مثل واجهة ويب DigitalOcean).
على الخادم البعيد، قم بإنشاء دليل ~/.ssh
إذا لم يكن موجودًا بالفعل:
بعد ذلك، يمكنك إنشاء أو إضافة ملف ~/.ssh/authorized_keys
بكتابة:
يجب أن تكون قادرًا الآن على تسجيل الدخول إلى الخادم البعيد بدون كلمة مرور.
تعليمات الاتصال الأساسية
ستغطي القسم التالي بعض الأساسيات حول كيفية الاتصال بخادم باستخدام SSH.
الاتصال بخادم بعيد
للاتصال بخادم بعيد وفتح جلسة تفاعلية هناك، يمكنك استخدام الأمر 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، سيُطلب منك عبارة سرية لمفتاحك الخاص إذا تم تعيين واحدة، وإلا ستقوم بتسجيل الدخول تلقائيًا.
تشغيل أمر واحد على خادم بعيد
لتشغيل أمر واحد على خادم بعيد بدلاً من إنشاء جلسة للقشرة، يمكنك إضافة الأمر بعد معلومات الاتصال، مثل هذا:
سيتم الاتصال بالمضيف البعيد، والمصادقة ببيانات اعتمادك، وتنفيذ الأمر الذي حددته. سيتم إغلاق الاتصال على الفور بعد ذلك.
تسجيل الدخول إلى خادم باستخدام منفذ مختلف
بشكل افتراضي، يعمل سحاب SSH على الخادم على المنفذ 22
. سيفترض عميل SSH أن هذا هو الحال عند محاولة الاتصال. إذا كان خادم SSH الخاص بك يستمع على منفذ غير قياسي (يتم توضيح هذا في القسم التالي)، عليك تحديد رقم المنفذ الجديد عند الاتصال بالعميل الخاص بك.
يمكنك القيام بذلك عن طريق تحديد رقم المنفذ باستخدام الخيار -p
:
لتجنب الحاجة إلى القيام بذلك في كل مرة تقوم فيها بتسجيل الدخول إلى الخادم عن بعد الخاص بك، يمكنك إنشاء أو تحرير ملف تكوين في الدليل ~/.ssh
داخل دليل المستخدم الخاص بك على الكمبيوتر المحلي.
قم بتحرير أو إنشاء الملف الآن عن طريق كتابة:
في هذا المكان، يمكنك تعيين خيارات تكوين محددة للمضيف. لتحديد منفذك الجديد، استخدم تنسيق مثل هذا:
Host remote_alias
HostName remote_host
Port port_num
سيتيح لك هذا تسجيل الدخول دون تحديد رقم المنفذ المحدد في سطر الأوامر.
إضافة مفاتيح SSH الخاصة بك إلى وكيل SSH لتجنب كتابة عبارة المرور
إذا كانت لديك عبارة مرور على مفتاح SSH الخاص بك، فسيُطلب منك إدخال عبارة المرور في كل مرة تستخدمها للاتصال بمضيف بعيد.
لتجنب الحاجة إلى القيام بذلك مرارًا وتكرارًا، يمكنك تشغيل وكيل SSH. يخزن هذا الأداة الصغيرة مفتاحك الخاص بعد أن تقوم بإدخال عبارة المرور للمرة الأولى. سيكون متاحًا خلال جلسة الطرفية الخاصة بك، مما يتيح لك الاتصال في المستقبل دون إعادة إدخال عبارة المرور.
هذا مهم أيضًا إذا كنت بحاجة إلى إعادة توجيه بيانات اعتماد SSH الخاصة بك (والتي سيتم عرضها لاحقًا).
لبدء وكيل SSH، اكتب ما يلي في جلسة الطرفية المحلية الخاصة بك:
OutputAgent pid 10891
هذا سيبدأ برنامج الوكيل وسيضعه في الخلفية. الآن، تحتاج إلى إضافة مفتاحك الخاص إلى الوكيل، حتى يتمكن من إدارة مفتاحك:
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 إلى أي مضيف آخر مرخص لمفتاح SSH الخاص بك. ستقوم بالاتصال كما لو كان مفتاح SSH الخاص بك موجودًا على هذا الخادم.
خيارات تكوين الخادم
تحتوي هذه الجزء على بعض الخيارات الشائعة لتكوين الخادم من الجانب الخادم الذي يمكن أن تؤثر على الطريقة التي يستجيب بها الخادم وأنواع الاتصالات المسموح بها.
تعطيل المصادقة بكلمة المرور
إذا كانت لديك مفاتيح SSH مكونة وتم اختبارها وتعمل بشكل صحيح، فمن المحتمل أنه من الجيد تعطيل المصادقة بكلمة مرور. سيمنع ذلك أي مستخدم من تسجيل الدخول باستخدام SSH باستخدام كلمة مرور.
للقيام بذلك، قم بالاتصال بالخادم البعيد وافتح ملف /etc/ssh/sshd_config
بصلاحيات المستخدم الجذر أو sudo:
في داخل الملف، ابحث عن التوجيهة PasswordAuthentication
. إذا كانت معلقة، قم بفك تعليقها. ثم ضعها على no
لتعطيل تسجيل الدخول بكلمة المرور:
PasswordAuthentication no
بعد أن قمت بإجراء التغيير، قم بحفظ وإغلاق الملف. لتنفيذ التغييرات، يجب عليك إعادة تشغيل خدمة SSH.
على Ubuntu/Debian:
على CentOS/Fedora:
الآن، لن يتمكن جميع الحسابات على النظام من تسجيل الدخول باستخدام SSH باستخدام كلمات مرور.
تغيير المنفذ الذي يعمل عليه خادم SSH Daemon
يقترح بعض المسؤولين تغيير المنفذ الافتراضي الذي يعمل عليه SSH. يمكن أن يساعد هذا في تقليل عدد محاولات المصادقة التي يتعرض لها خادمك من البوتات الآلية.
لتغيير المنفذ الذي يستمع إليه ساعة SSH، سيتعين عليك تسجيل الدخول إلى الخادم البعيد. افتح ملف sshd_config
على النظام البعيد بامتيازات المستخدم الجذر، سواء عن طريق تسجيل الدخول باستخدام ذلك المستخدم أو باستخدام sudo
:
بمجرد دخولك، يمكنك تغيير المنفذ الذي يعمل عليه SSH عن طريق البحث عن تحديد Port 22
وتعديله ليعكس المنفذ الذي ترغب في استخدامه. على سبيل المثال، لتغيير المنفذ إلى 4444
، ضع هذا في ملفك:
#Port 22
Port 4444
احفظ وأغلق الملف عند الانتهاء. لتنفيذ التغييرات، يجب إعادة تشغيل ساعة SSH.
على أوبونتو/ديبيان:
على سنت أوس/فيدورا:
بعد إعادة تشغيل الساعة، ستحتاج إلى المصادقة عن طريق تحديد رقم المنفذ (كما هو موضح في القسم السابق).
تقييد المستخدمين الذين يمكنهم الاتصال عبر SSH
لتحديد الحسابات الخاصة بالمستخدمين الذين يمكنهم تسجيل الدخول من خلال SSH بشكل صريح، يمكنك اتباع بعض الطرق المختلفة، كل منها ينطوي على تحرير ملف تكوين ساعة SSH.
على الخادم البعيد الخاص بك، افتح هذا الملف الآن بامتيازات المستخدم الجذر أو بـ sudo:
أول طريقة لتحديد الحسابات المسموح لها بتسجيل الدخول هي استخدام التوجيه AllowUsers
. ابحث عن توجيه AllowUsers
في الملف. إذا لم يكن هناك، قم بإنشائه في أي مكان. بعد التوجيه، قم بتعيين حسابات المستخدمين التي يجب السماح لها بتسجيل الدخول عبر SSH:
AllowUsers user1 user2
احفظ وأغلق الملف. أعد تشغيل الخدمة لتنفيذ التغييرات.
على أوبونتو/ديبيان:
على سينتوس/فيدورا:
إذا كنت أكثر راحةً مع إدارة المجموعات، يمكنك استخدام التوجيه AllowGroups
بدلاً من ذلك. إذا كان هذا هو الحال، قم بإضافة مجموعة واحدة فقط يجب السماح لها بالوصول عبر SSH (سنقوم بإنشاء هذه المجموعة وإضافة أعضائها لاحقًا):
AllowGroups sshmembers
احفظ وأغلق الملف.
الآن، يمكنك إنشاء مجموعة نظام (بدون دليل منزلي) تطابق المجموعة التي حددتها عبر الكتابة:
تأكد من إضافة حسابات المستخدمين الضرورية إلى هذه المجموعة. يمكن القيام بذلك عبر الكتابة:
الآن، أعد تشغيل خدمة SSH لتنفيذ التغييرات.
على أوبونتو/ديبيان:
على سينتوس/فيدورا:
تعطيل تسجيل الدخول باسم المستخدم root
من المستحسن في كثير من الأحيان تعطيل تمامًا تسجيل الدخول باسم المستخدم root عبر SSH بعد إعداد حساب مستخدم SSH يتمتع بامتيازات sudo
.
للقيام بذلك، افتح ملف تكوين خادم SSH بصلاحيات root أو sudo على الخادم عن بعد الخاص بك.
ابحث في الداخل عن توجيه يسمى PermitRootLogin
. إذا كان معلقًا، فقم بفك تعليقه. قم بتغيير القيمة إلى “no”:
PermitRootLogin no
احفظ وأغلق الملف. لتنفيذ التغييرات الخاصة بك، أعد تشغيل خادم SSH.
على أوبونتو/ديبيان:
على سينت أو إفيدورا:
السماح بالوصول الجذري لأوامر محددة
هناك بعض الحالات التي قد ترغب فيها في تعطيل الوصول الجذري بشكل عام، ولكن تمكينه للسماح بتشغيل تطبيقات معينة بشكل صحيح. على سبيل المثال، قد يكون ذلك في حالة جدول النسخ الاحتياطي.
يمكن تحقيق ذلك من خلال ملف authorized_keys
للمستخدم الجذر، والذي يحتوي على مفاتيح SSH المصرح باستخدامها للحساب.
أضف المفتاح من جهاز الكمبيوتر المحلي الذي ترغب في استخدامه لهذه العملية (نوصي بإنشاء مفتاح جديد لكل عملية تلقائية) إلى ملف authorized_keys
للمستخدم الجذر على الخادم. سنقوم بتوضيح ذلك باستخدام الأمر ssh-copy-id
هنا، ولكن يمكنك استخدام أي من طرق نسخ المفاتيح التي نناقشها في أقسام أخرى:
الآن، قم بتسجيل الدخول إلى الخادم عن بعد. سنحتاج إلى ضبط الإدخال في ملف authorized_keys
، لذا افتحه بصلاحيات المستخدم الجذر أو sudo:
في بداية السطر مع المفتاح الذي قمت بتحميله، أضف command=
قائمة تعريف الأمر الذي يمكن استخدام هذا المفتاح له. يجب أن يتضمن المسار الكامل للبرنامج القابل للتنفيذ، بالإضافة إلى أي وسيطات:
command="/path/to/command arg1 arg2" ssh-rsa ...
احفظ وأغلق الملف عند الانتهاء.
الآن، افتح ملف sshd_config
بامتيازات المستخدم الجذر أو باستخدام sudo:
ابحث عن التوجيهة PermitRootLogin
، وقم بتغيير القيمة إلى forced-commands-only
. هذا سيسمح فقط بتسجيل دخول SSH باستخدام الجذر عندما يتم تحديد أمر للمفتاح:
PermitRootLogin forced-commands-only
احفظ وأغلق الملف. أعد تشغيل خدمة SSH لتطبيق التغييرات الخاصة بك.
على Ubuntu/Debian:
على CentOS/Fedora:
توجيه عرض تطبيقات X إلى العميل
يمكن تكوين خادم SSH لتوجيه عرض تطبيقات X على الخادم إلى جهاز العميل بشكل تلقائي. لكي تعمل هذه الوظيفة بشكل صحيح، يجب أن يكون لدى العميل نظام X windows مكونًا وممكنًا.
لتمكين هذه الوظيفة، قم بتسجيل الدخول إلى الخادم البعيد وقم بتحرير ملف sshd_config
بصلاحيات الجذر أو باستخدام sudo:
ابحث عن التوجيهة X11Forwarding
. إذا كانت معلقة، قم بإلغاء تعليقها. أنشئها إذا لزم الأمر وقم بتعيين القيمة إلى “نعم”:
X11Forwarding yes
حفظ وإغلاق الملف. أعد تشغيل خادم SSH لتنفيذ هذه التغييرات.
على أوبونتو/ديبيان:
على سنت أوس/فيدورا:
للاتصال بالخادم وتوجيه عرض تطبيق ما، يجب عليك تمرير الخيار -X
من العميل أثناء الاتصال:
التطبيقات الرسومية التي يتم تشغيلها على الخادم من خلال هذه الجلسة يجب أن تُعرض على الكمبيوتر المحلي. قد تكون الأداء بطيئة قليلاً، ولكنها مفيدة جدًا في الحالات الطارئة.
خيارات تكوين العميل
في القسم التالي، سنركز على بعض التعديلات التي يمكنك إجراؤها على الجانب العميل من الاتصال.
تحديد معلومات الاتصال خاصة بالخادم
على جهاز الكمبيوتر المحلي الخاص بك، يمكنك تحديد تكوينات فردية لبعض أو جميع الخوادم التي تتصل بها. يمكن تخزين هذه في ملف ~/.ssh/config
، الذي يتم قراءته من قبل عميل SSH الخاص بك في كل مرة يتم فيها استدعاؤه.
أنشئ أو افتح هذا الملف في محرر النصوص على جهاز الكمبيوتر المحلي الخاص بك:
في الداخل، يمكنك تعريف خيارات التكوين الفردية عن طريق إدخال كل واحدة بكلمة مفتاحية Host
، تليها الاسم المستعار. تحت هذا، ومسوّر، يمكنك تعريف أي من الإرشادات الموجودة في صفحة الرجل لـ ssh_config
:
مثال على تكوين يمكن أن يكون كالتالي:
Host testhost
HostName your_domain
Port 4444
User demo
ثم يمكنك الاتصال بـ your_domain
على البور 4444
باستخدام اسم المستخدم demo
ببساطة عن طريق كتابة:
يمكنك أيضًا استخدام البدائل الشاملة لتطابق أكثر من مضيف. تذكر أن التطابقات اللاحقة يمكن أن تتجاوز السابقة. بسبب هذا، يجب وضع التطابقات العامة الخاصة بك في الجزء العلوي. على سبيل المثال، يمكنك تعيين افتراضيًا عدم السماح بالتوجيه X لجميع الاتصالات، مع تجاوز لـ your_domain
عن طريق وضع هذا في ملفك:
Host *
ForwardX11 no
Host testhost
HostName your_domain
ForwardX11 yes
Port 4444
User demo
احفظ وأغلق الملف عند الانتهاء.
الحفاظ على الاتصالات نشطة لتجنب انقطاع الاتصال
إذا وجدت نفسك تفصل عن جلسات SSH قبل أن تكون جاهزًا، فمن الممكن أن يتم إنهاء اتصالك تلقائيًا.
يمكنك تكوين عميلك لإرسال باكت إلى الخادم كل فترة معينة لتجنب هذا الوضع:
على جهاز الكمبيوتر المحلي، يمكنك تكوين هذا لكل اتصال عن طريق تحرير ملف ~/.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
على جهاز الكمبيوتر المحلي:
إذا لم يكن موجودًا بالفعل ، في أعلى الملف ، قم بتعريف قسم سيتطابق مع جميع المضيفين. ضبط الإرشاد StrictHostKeyChecking
على no
لإضافة مضيفين جدد تلقائيًا إلى ملف known_hosts
. ضبط UserKnownHostsFile
على /dev/null
لعدم التحذير في حالة ظهور مضيفين جدد أو تغييرهم:
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
يمكنك تمكين التحقق حالةً بحالةٍ عن طريق عكس تلك الخيارات للمضيفين الآخرين. الافتراضي لـ StrictHostKeyChecking
هو ask
:
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Host testhost
HostName your_domain
StrictHostKeyChecking ask
UserKnownHostsFile /home/demo/.ssh/known_hosts
التضاعف عبر SSH عبر اتصال TCP واحد
هناك حالات يمكن فيها أن يستغرق إنشاء اتصال TCP جديد وقتًا أطول مما ترغب فيه. إذا كنت تقوم بإجراء اتصالات متعددة بنفس الجهاز، فيمكنك الاستفادة من التضاعف.
يُعيد تضاعف SSH استخدام نفس الاتصال TCP لجلسات SSH متعددة. يزيل هذا بعض العمل اللازم لإنشاء جلسة جديدة، مما قد يسرّع الأمور. قد يكون تقييد عدد الاتصالات مفيدًا أيضًا لأسباب أخرى.
لإعداد التضاعف، يمكنك إعداد الاتصالات يدويًا، أو يمكنك تكوين عميلك لاستخدام التضاعف تلقائيًا عندما يتوفر. سنقدم الخيار الثاني هنا.
لتكوين التضاعف، قم بتحرير ملف تكوين عميل SSH على جهازك المحلي:
إذا لم يكن لديك بالفعل تعريف مضيف بالنجمة في أعلى الملف، أضف واحدًا الآن (كـ Host *
). سنقوم بتعيين القيم ControlMaster
، ControlPath
، و ControlPersist
لتأسيس تكويننا للتضاعف.
يجب تعيين ControlMaster
إلى “auto” للسماح تلقائيًا بتعدد القنوات إذا كان ذلك ممكنًا. سيقوم ControlPath
بتحديد مسار المأخذ التحكم. ستقوم الجلسة الأولى بإنشاء هذا المأخذ وستكون الجلسات التالية قادرة على العثور عليه لأنه يتم وسمه بواسطة اسم المستخدم والمضيف والمنفذ.
تعيين خيار ControlPersist
إلى 1
سيسمح بخلفية الاتصال الرئيسي الأولي. القيمة 1
تحدد أن الاتصال TCP يجب أن ينتهي تلقائيًا بعد ثانية واحدة من إغلاق آخر جلسة SSH:
Host *
ControlMaster auto
ControlPath ~/.ssh/multiplex/%r@%h:%p
ControlPersist 1
قم بحفظ وإغلاق الملف عند الانتهاء. الآن، نحتاج إلى إنشاء المجلد الذي حددناه في مسار التحكم:
الآن، ستحاول أي جلسات تُنشأ مع نفس الجهاز استخدام المأخذ والاتصال TCP الحالي. عندما تنتهي آخر جلسة، سيتم إيقاف الاتصال بعد ثانية واحدة.
إذا كان هناك سبب ما تحتاج إلى تجاوز تكوين التعدد مؤقتًا، يمكنك فعل ذلك عن طريق تمرير العلامة -S
مع none
:
إعداد أنفاق SSH
إنشاء نفق SSH آمن لتوجيه حركة المرور الأخرى هو طريقة ممتازة للتغلب على إعدادات جدار الحماية القيدية. إنها أيضًا طريقة رائعة لتشفير حركة المرور عبر الشبكة غير المشفرة.
تكوين النفق المحلي إلى خادم
يمكن استخدام اتصالات SSH لتوجيه حركة المرور من منافذ على المضيف المحلي إلى منافذ على مضيف بعيد.
A local connection is a way of accessing a network location from your local computer through your remote host. First, an SSH connection is established to your remote host. On the remote server, a connection is made to an external (or internal) network address provided by the user and traffic to this location is tunneled to your local computer on a specified port.
يُستخدم هذا غالبًا لإنشاء نفق إلى بيئة شبكية أقل قيودًا من خلال تجاوز جدار الحماية. واستخدام آخر شائع هو الوصول إلى واجهة ويب “localhost-only” من موقع بعيد.
لإنشاء نفق محلي إلى خادمك عن بُعد ، تحتاج إلى استخدام المعلمة -L
عند الاتصال ويجب أن تقدم ثلاث قطع إضافية من المعلومات:
- المنفذ المحلي الذي ترغب في الوصول إلى الاتصال المُنفذ من خلاله.
- المضيف الذي ترغب في أن يتصل به مضيفك البعيد.
- المنفذ الذي ترغب في أن يتصل به مضيفك البعيد عليه.
تُعطى هذه المعلومات ، بالترتيب أعلاه (مفصولة بواسطة نقاط وظيفية) ، كوسائط لعلم -L
. سنستخدم أيضًا علم -f
، الذي يجعل SSH يدخل إلى الخلفية قبل التنفيذ والعلم -N
، الذي لا يفتح قشرة أو ينفذ برنامجًا على الجانب البعيد.
على سبيل المثال ، للاتصال بـ your_domain
على المنفذ 80 على مضيفك البعيد ، مما يجعل الاتصال متاحًا على جهازك المحلي على المنفذ 8888 ، يمكنك كتابة:
الآن ، إذا قمت بتوجيه متصفح الويب المحلي إلى 127.0.0.1:8888
، يجب أن ترى أي محتوى موجود في your_domain
على المنفذ 80
.
A more general guide to the syntax is:
منذ الاتصال في الخلفية، ستحتاج إلى العثور على مُعرف العملية الخاصة به لإنهائه. يمكنك القيام بذلك عن طريق البحث عن المنفذ الذي قمت بتوجيهه:
Output1001 5965 0.0 0.0 48168 1136 ? Ss 12:28 0:00 ssh -f -N -L 8888:your_domain: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 الخاص بك:
خيار آخر هو بدء الاتصال بدون استخدام العلم -f. سيبقي هذا الاتصال في الأمامية، مما يمنعك من استخدام نافذة الطرفية لمدة التوجيه. الفائدة من ذلك هي أنه يمكنك بسهولة إنهاء النفق عن طريق كتابة CTRL-C.
تكوين التوجيه عن بعد إلى خادم
يمكن استخدام اتصالات SSH لتوجيه حركة المرور من منافذ على المضيف المحلي إلى منافذ على مضيف بعيد.
في نفق بعيد، يتم إنشاء اتصال بمضيف بعيد. خلال إنشاء النفق، يتم تحديد منفذ بعيد. ثم يتم توجيه هذا المنفذ، على المضيف البعيد، إلى تركيبة مضيف ومنفذ متصل بها من الكمبيوتر المحلي. سيسمح هذا للكمبيوتر البعيد بالوصول إلى المضيف من خلال الكمبيوتر المحلي الخاص بك.
يمكن أن يكون ذلك مفيدًا إذا كنت بحاجة إلى السماح بالوصول إلى شبكة داخلية مقفلة على الاتصالات الخارجية. إذا سمحت جدار الحماية بالاتصالات من الشبكة، فسيتيح لك هذا الاتصال بجهاز بعيد وتوجيه حركة المرور من تلك الجهاز إلى موقع في الشبكة الداخلية.
لإنشاء نفق بعيد إلى الخادم البعيد الخاص بك، تحتاج إلى استخدام المعلمة -R
عند الاتصال ويجب عليك تزويد ثلاث معلومات إضافية:
- المنفذ الذي يمكن للمضيف البعيد الوصول إليه للاتصال بالنفق.
- المضيف الذي ترغب في أن يتصل جهاز الكمبيوتر المحلي بك.
- المنفذ الذي ترغب في أن يتصل جهاز الكمبيوتر المحلي به.
تُعطى هذه، بالترتيب أعلاه (مفصولة بواسطة نقاط الفاصلة)، كمُعطيات لعلم الرايات -R
. سنستخدم أيضًا الراية -f
، التي تُسبب لـ SSH الدخول إلى الخلفية قبل التنفيذ، والراية -N
، التي لا تفتح قشرة أو تنفذ برنامجًا على الجانب البعيد.
على سبيل المثال، للاتصال بـ your_domain
على المنفذ 80 على جهاز الكمبيوتر المحلي الخاص بنا، مما يجعل الاتصال متاحًا على مضيفنا البعيد على المنفذ 8888
، يمكنك كتابة:
الآن، على المضيف البعيد، بافتتاح متصفح ويب على 127.0.0.1:8888
سيتيح لك رؤية أي محتوى يتواجد عنوانه في your_domain
على المنفذ 80
.
A more general guide to the syntax is:
نظرًا لأن الاتصال في الخلفية، عليك أن تجد مُعرِّف العملية الخاص به لقتله. يمكنك القيام بذلك عن طريق البحث عن المنفذ الذي قمت بتوجيهه:
Output1001 5965 0.0 0.0 48168 1136 ? Ss 12:28 0:00 ssh -f -N -R 8888:your_domain:80 username@remote_host
1001 6113 0.0 0.0 13648 952 pts/2 S+ 12:37 0:00 grep --colour=auto 8888
ثم يمكنك قتل العملية عن طريق استهداف مُعرّف العملية، وهو الرقم في العمود الثاني، للسطر الذي يتطابق مع أمر SSH الخاص بك:
خيار آخر هو بدء الاتصال بدون استخدام علامة -f
. سيحافظ هذا على الاتصال في الخلفية، مما يمنعك من استخدام نافذة الطرفية أثناء التوجيه. الفائدة من هذا هي أنه يمكنك بسهولة إيقاف التونيل عن طريق كتابة CTRL-C
.
تكوين التوجيه الديناميكي إلى خادم بعيد
يمكن استخدام اتصالات SSH لتوجيه حركة المرور من منافذ على المضيف المحلي إلى منافذ على المضيف البعيد.
A dynamic tunnel is similar to a local tunnel in that it allows the local computer to connect to other resources through a remote host. A dynamic tunnel does this by simply specifying a single local port. Applications that wish to take advantage of this port for tunneling must be able to communicate using the SOCKS protocol so that the packets can be correctly redirected at the other side of the tunnel.
سيتم إرسال حركة المرور التي تم تمريرها إلى هذا المنفذ المحلي إلى المضيف البعيد. من هناك، سيتم تفسير بروتوكول SOCKS لإنشاء اتصال بالموقع النهائي المرغوب. يتيح هذا الإعداد لتطبيق قادر على SOCKS الاتصال بأي عدد من المواقع عبر الخادم البعيد، دون توجهات ثابتة متعددة.
لإنشاء الاتصال، سنمرر العلامة -D
بالإضافة إلى المنفذ المحلي الذي نرغب في الوصول إلى التونيل من خلاله. سنستخدم أيضًا العلامة -f
، التي تجعل SSH يدخل في الخلفية قبل التنفيذ، والعلامة -N
، التي لا تفتح شاشة أو تنفذ برنامجًا على الجانب البعيد.
على سبيل المثال، لإنشاء تونيل على المنفذ 7777
، يمكنك كتابة:
من هنا، يمكنك البدء في توجيه تطبيقك الذي يدعم SOCKS (مثل متصفح الويب) إلى المنفذ الذي اخترته. سيقوم التطبيق بإرسال معلوماته إلى مأخذ مرتبط بالمنفذ.
طريقة توجيه حركة المرور إلى منفذ SOCKS ستختلف اعتمادًا على التطبيق. على سبيل المثال، في متصفح Firefox، المكان العام هو التفضيلات > متقدم > الإعدادات > تكوينات البروكسي اليدوية. في Chrome، يمكنك بدء التطبيق بمعلمة --proxy-server=
معينة. سترغب في استخدام واجهة localhost والمنفذ الذي قمت بتوجيهه.
نظرًا لأن الاتصال يحدث في الخلفية، ستحتاج إلى العثور على مُعرّف العملية لإيقافها. يمكنك القيام بذلك عن طريق البحث عن المنفذ الذي قمت بتوجيهه:
Output1001 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
ثم يمكنك إيقاف العملية بالتوجيه إلى مُعرّف العملية، والذي هو الرقم في العمود الثاني، من السطر الذي يتطابق مع أمر SSH الخاص بك:
خيار آخر هو بدء الاتصال بدون العلم -f. سيُبقي هذا الاتصال في المقدمة، مما يمنعك من استخدام نافذة الطرفية خلال فترة التوجيه. الفائدة من ذلك هو أنه يمكنك بسهولة إيقاف النفق بكتابة CTRL-C
.
استخدام أكواد هروب SSH للتحكم في الاتصالات
حتى بعد إقامة جلسة SSH، من الممكن ممارسة السيطرة على الاتصال من داخل الطرفية. يمكننا القيام بذلك باستخدام ما يُسمى بأكواد هروب SSH، التي تسمح لنا بالتفاعل مع برنامج SSH المحلي من داخل الجلسة.
فرض فصل من الجانب العميل (كيفية الخروج من جلسة متجمدة أو معلقة)
أحد أكثر الميزات المفيدة لـ OpenSSH التي تمر عادة دون إشعار هي القدرة على التحكم في جوانب معينة من الجلسة من الداخل.
يمكن تنفيذ هذه الأوامر بدءًا من الحرف التحكمي ~
داخل جلسة SSH. ستتم تفسير أوامر التحكم فقط إذا كانت أول ما يُكتب بعد سطر جديد، لذا اضغط دائمًا على مفتاح ENTER مرة واحدة أو مرتين قبل استخدامها.
أحد أكثر عناصر التحكم فائدة هو القدرة على بدء فصل من العميل. يتم غالبًا إغلاق اتصالات SSH من قبل الخادم، ولكن يمكن أن يكون هذا مشكلة إذا كان الخادم يعاني من مشاكل أو إذا تم فصل الاتصال. من خلال استخدام فصل من الجانب العميل، يمكن إغلاق الاتصال بشكل نظيف من العميل.
لإغلاق الاتصال من العميل، استخدم الحرف التحكمي (~
) مع نقطة. إذا كان اتصالك يعاني من مشاكل، فمن المحتمل أن تكون في ما يبدو جلسة تحكم معلقة. اكتب الأوامر على الرغم من عدم وجود تغذية راجعة لتنفيذ فصل من الجانب العميل:
يجب أن يتم إغلاق الاتصال على الفور، مما يعيدك إلى جلسة الطرف المحلي.
وضع جلسة SSH في الخلفية
واحدة من أكثر الميزات المفيدة لـ OpenSSH التي تمر دون أن يلاحظها الكثيرون هي القدرة على التحكم في جوانب معينة من الجلسة من داخل الاتصال.
يمكن تنفيذ هذه الأوامر ابتداءً من الحرف التحكمي ~
داخل اتصال SSH. ستتم تفسير الأوامر التحكمية فقط إذا كانت هي أول شيء يُكتب بعد سطر جديد، لذا يجب دائمًا الضغط على ENTER
مرة أو مرتين قبل استخدام واحدة.
إحدى القدرات التي يوفرها ذلك هي وضع جلسة SSH في الخلفية. للقيام بذلك، نحتاج إلى توفير الحرف التحكمي (~
) ثم تنفيذ اختصار لوحة المفاتيح التقليدي لتخليف مهمة (CTRL-z):
سيضع هذا الأمر الاتصال في الخلفية، مما يعيدك إلى جلسة الشل المحلية الخاصة بك. للعودة إلى جلسة SSH الخاصة بك، يمكنك استخدام آليات التحكم في المهام التقليدية.
يمكنك إعادة تنشيط مهمتك التي تم وضعها في الخلفية مؤخرًا على الفور عن طريق كتابة:
إذا كان لديك عدة مهام في الخلفية، يمكنك رؤية المهام المتاحة عن طريق كتابة:
Output[1]+ Stopped ssh username@some_host
[2] Stopped ssh username@another_host
ثم يمكنك جلب أي من المهام إلى الأمام باستخدام الفهرس في العمود الأول مع علامة النسبة المئوية:
تغيير خيارات توجيه المنفذ في اتصال SSH قائم
واحدة من أكثر الميزات المفيدة في OpenSSH التي تذهب دون أن يلفت الكثير من الانتباه هي القدرة على التحكم في بعض جوانب الجلسة من داخل الاتصال.
يمكن تنفيذ هذه الأوامر باستخدام الرمز التحكمي ~
من داخل اتصال SSH. سيتم تفسير أوامر التحكم فقط إذا كانت أول شيء يتم كتابته بعد سطر جديد ، لذا دائمًا اضغط على ENTER مرة أو مرتين قبل استخدام واحدة.
إحدى الأشياء التي يسمح بها هذا هي تغيير تكوين توجيه المنفذ بعد تأسيس الاتصال بالفعل. يتيح لك هذا إنشاء أو إلغاء قواعد توجيه المنفذ على الطاير.
هذه القدرات جزء من واجهة سطر الأوامر لـ SSH ، والتي يمكن الوصول إليها أثناء الجلسة باستخدام الرمز التحكمي (~
) و “C”:
ssh>
سيتم منحك موجه أوامر SSH ، الذي يحتوي على مجموعة محدودة جدًا من الأوامر الصالحة. لرؤية الخيارات المتاحة ، يمكنك كتابة -h
من هذا الموجه. إذا لم يتم إرجاع أي شيء ، قد تحتاج إلى زيادة وضوح إخراج SSH الخاص بك باستخدام ~v
عدة مرات:
Commands:
-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
كما يمكنك أن ترى، يمكنك بسهولة تنفيذ أي من خيارات الإعادة التوجيه باستخدام الخيارات المناسبة (انظر قسم الإعادة التوجيه لمزيد من المعلومات). يمكنك أيضًا إيقاف تشغيل النفق بالأمر “kill” المرتبط مع حرف النوع المرسل مع “K” قبل الحرف. على سبيل المثال، لإيقاف تشغيل الإعادة التوجيه المحلية (-L
)، يمكنك استخدام الأمر -KL
. ستحتاج فقط إلى تقديم المنفذ لذلك.
لذلك، لإعداد إعادة توجيه محلية للمنفذ، يمكنك كتابة:
الآن ستتمكن منفذ 8888
على جهاز الكمبيوتر المحلي من التواصل مع خادم الويب على الجهاز الذي تقوم بالاتصال به. عند الانتهاء، يمكنك تفكيك هذا التوجيه بكتابة:
الختام
يجب أن تغطي التعليمات أعلاه معظم المعلومات التي سيحتاجها معظم المستخدمين حول SSH في الحياة اليومية. إذا كان لديك نصائح أخرى أو ترغب في مشاركة تكويناتك المفضلة والأساليب، فلا تتردد في استخدام التعليقات أدناه.