<?xml version="1.0"?>
<rss version="2.0"><channel><title>DevOps: SSH</title><link>https://academy.hsoub.com/devops/security/ssh/?d=4</link><description>DevOps: SSH</description><language>ar</language><item><title>&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x628;&#x631;&#x648;&#x62A;&#x648;&#x643;&#x648;&#x644; SSH &#x644;&#x644;&#x627;&#x62A;&#x635;&#x627;&#x644; &#x628;&#x62E;&#x627;&#x62F;&#x645; &#x628;&#x639;&#x64A;&#x62F;</title><link>https://academy.hsoub.com/devops/security/ssh/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A8%D8%B1%D9%88%D8%AA%D9%88%D9%83%D9%88%D9%84-ssh-%D9%84%D9%84%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D8%AE%D8%A7%D8%AF%D9%85-%D8%A8%D8%B9%D9%8A%D8%AF-r837/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2025_02/How-To-Use-SSH-to-Connect-to-a-Remote-Server.png.b4d0de2a2f663022fdb837e5899b2a92.png" /></p>
<p>
	يعد بروتوكول النقل الآمن Secure Shell، أو <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> </abbr>اختصارًا، إحدى الأدوات الأساسية التي يجب على مسؤول النظام إتقانها، حيث يستخدم لتسجيل الدخول الآمن إلى الأجهزة البعيدة عن طريق الطرفية أو سطر الأوامر، وهو من أكثر الطرق شيوعًا للوصول إلى خوادم لينكس، وستتعلم في هذا المقال كيفية التعامل مع بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> للاتصال بنظام بعيد خطوة بخطوة.
</p>

<h2 id="windows">
	العمل على نظام تشغيل ويندوز Windows
</h2>

<p>
	إذا كنا نستخدم نظام التشغيل ويندوز على جهازنا، فسنحتاج إلى تثبيت إحدى إصدارات برنامج OpenSSH لنتمكن من استخدام الأمر <code><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr></code> من <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">سطر الأوامر</a>. أما إن فضّلنا العمل في برنامج PowerShell، فيمكن قراءة <a href="https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse" rel="external nofollow">توثيقات مايكروسوفت</a> لإضافة OpenSSH إلى PowerShell. أما في حال العمل في بيئة لينكس Linux كاملة، فيمكن إعداد WSL -أي نظام ويندوز الفرعي لنظام لينكس Windows Subsystem for Linux- وهو طبقة توافق لتشغيل أنظمة لينكس داخل أنظمة ويندوز، مما يتيح لنا تشغيل طرفية حقيقية مباشرةً في نظام ويندوز دون الحاجة لآلة افتراضية ويتضمن الأمر <code><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr></code>. وأخيرًا، يمكننا <a href="https://academy.hsoub.com/programming/workflow/git/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D9%85%D8%B9-%D9%86%D8%B8%D8%A7%D9%85-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%A5%D8%B5%D8%AF%D8%A7%D8%B1%D8%A7%D8%AA-%D8%AC%D9%8A%D8%AA-git-r1593/" rel="">تثبيت Git </a>على نظام ويندوز، والذي يوفر طرفية Bash أصلية تتضمن أيضًا الأمر <code><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr></code>. فجميع هذه البيئات الثلاثة مدعومة والخيار متروك لكم في العمل مع إحداها حسب ما تفضلونه.
</p>

<h2 id="linuxmac">
	العمل على نظام تشغيل لينكس Linux أو ماك Mac
</h2>

<p>
	إن كنا نستخدم نظام لينكس أو ماك فسيكون الأمر <code><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr></code> جاهزًا في الطرفية، وفيما يلي صيغته الأساسية:
</p>

<pre class="ipsCode">ssh remote_host
</pre>

<p>
	<code>remote_host</code> هو عنوان IP أو اسم النطاق domain الذي نريد الاتصال به.
</p>

<p>
	يفترض الأمر السابق أن اسم المستخدم على النظام البعيد هو نفس اسم المستخدم على نظامنا المحلي، أما إن كان اسم المستخدم مختلفًا، فيمكننا تحديده باستخدام الأمر التالي:
</p>

<pre class="ipsCode">ssh remote_username@remote_host
</pre>

<p>
	قد يُطلب منا إدخال كلمة مرور للاتصال بالخادم، وسنتحدث لاحقًا عن كيفية استخدام مفاتيح المصادقة المشفرة keys بدل كلمات المرور passwords.
</p>

<p>
	نستخدم الأمر التالي للخروج من جلسة <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> والعودة إلى الصدفة:
</p>

<pre class="ipsCode">Exit
</pre>

<h2 id="ssh-1">
	آلية عمل بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>
</h2>

<p>
	يعمل بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> عن طريق توصيل برنامج عميل client program يسمى sshd مع خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr>، فبالعودة إلى مثالنا السابق، فإن <code><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr></code> هو بمثابة برنامج العميل، أما خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr> فيعمل على الجهاز البعيد remote host الذي حددناه. يجب أن يبدأ خادم sshd بالعمل تلقائيًا في معظم بيئات لينكس. وإذا لم يعمل لسبب ما، فقد نحتاج إلى الوصول إلى الخادم من خلال إحدى طرفيّات المتصفح المعتمدة على الويب web-based console، أوالطرفيّة المحلية local serial console.
</p>

<p>
	يعتمد الأمر اللازم لتشغيل خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr> على <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%AE%D8%AA%D8%A7%D8%B1-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A7%D9%84%D9%85%D9%86%D8%A7%D8%B3%D8%A8%D8%A9-%D9%84%D9%83%D8%9F-r811/" rel="">توزيعة لينكس</a> التي نستخدمها، فعند استخدام توزيعة أوبنتو، يمكننا تشغيل الأمر التالي:
</p>

<pre class="ipsCode">sudo systemctl start ssh
</pre>

<p>
	يُشغّل الأمر السابق خادم sshd وبإمكاننا الآن تسجيل الدخول إلى الخادم عن بعد.
</p>

<h2 id="ssh-2">
	كيفية ضبط إعدادات بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>
</h2>

<p>
	عندما نغيّر إعدادات بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> فإننا نغيّر أيضًا إعدادات خادم sshd. سنجد ملف الإعدادات ضمن المسار <code>/etc/<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr>/sshd_config</code>. ومن الضروري أخذ نسخة احتياطيةً عن هذا الملف قبل بدء التعديل، باستخدام الأمر التالي:
</p>

<pre class="ipsCode">sudo cp /etc/ssh/sshd_config{,.bak}
</pre>

<p>
	ثم نفتحه باستخدام محرر النصوص <code>nano</code> أو أي محرر آخر:
</p>

<pre class="ipsCode">sudo nano /etc/ssh/sshd_config
</pre>

<p>
	لنطلع على بعض خيارات الملف:
</p>

<pre class="ipsCode">Port 22
</pre>

<p>
	عند الإعلان عن منفذ جديد port declaration فإننا نحدد المنفذ الذي سيستخدمه خادم sshd للاتصال، والمنفذ الافتراضي لذلك هو <code>22</code>. يُفضّل ألا نغيّر هذا الإعداد، إلا إن كان لدينا سبب لذلك. وسنوضح لاحقًا كيفية الاتصال بالمنفذ الجديد.
</p>

<pre class="ipsCode">HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
</pre>

<p>
	عند الإعلان عن مفاتيح المضيف host keys فإننا نحدد مكان البحث عن مفاتيح المضيف العامة global host keys. وسنتحدث عن ذلك لاحقًا.
</p>

<pre class="ipsCode">SyslogFacility AUTH
LogLevel INFO
</pre>

<p>
	يحدد العنصران السابقان مستوى التسجيل logging level. إذ قد تكون زيادة التسجيل طريقة جيدة لاكتشاف المشكلات في <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>:
</p>

<pre class="ipsCode">LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
</pre>

<p>
	تحدد المعاملات السابقة بعض معلومات تسجيل الدخول:
</p>

<ul>
	<li>
		يحدد المعامل <code>LoginGraceTime</code> عدد الثواني إبقاء الاتصال قبل تسجيل الدخول، ويُنصح أن نجعل هذا الوقت أكثر بقليل من الوقت اللازم لتسجيل الدخول عادة
	</li>
	<li>
		يحدد المعامل <code>PermitRootLogin</code> هل يُسمح للمستخدم الجذر تسجيل الدخول أم لا، ويجب في معظم الحالات ضبط هذا الإعداد على الخيار <code>no</code> عند إنشاء مستخدم لديه امتيازات الجذر لتقليل خطر حصول أي شخص على امتيازات الجذر والوصول إلى خادمنا
	</li>
	<li>
		المعامل <code>strictModes</code> هو حارس أمان لا يسمح بتسجيل الدخول إذا كانت ملفات المصادقة متاحة القراءة للجميع. وهذا يمنع تسجيل الدخول عندما تكون ملفات الإعدادات غير آمنة
	</li>
</ul>

<pre class="ipsCode">X11Forwarding yes
X11DisplayOffset 10
</pre>

<ul>
	<li>
		تضبط هذه المعاملات خاصيةً تسمى <code>X11 Forwarding</code> تتيح لنا عرض واجهة المستخدم الرسومية GUI للنظام البعيد على النظام المحلي، ويجب تفعيل هذا الخيار على الخادم واستخدامه مع عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> أثناء الاتصال مصحوبًا بالخيار <code>x-</code>.
	</li>
</ul>

<p>
	بعد التعديل على الملف نحفظه ثم نغلقه. وإن كنا نستخدم محرر النصوص nano، نضغط على المفتاحين Ctrl+X، ثم Y عندما يُطلب منا ذلك، ثم نضغط على مفتاح Enter. ولا ننسى إعادة تحميل خادم sshd لتنفيذ التعديلات التي أجريناها في الملف باستخدام الأمر التالي:
</p>

<pre class="ipsCode">sudo systemctl reload ssh
</pre>

<p>
	يجب اختبار التعديلات بدقة للتأكد أنها تعمل كما يجب. كما يمكننا فتح بضع جلسات في الطرفية أثناء التعديل على ملف الإعدادات، لإلغاء التعديلات إن لزم الأمر دون الحاجة إلى إعادة تسجيل الدخول.
</p>

<h2 id="sshkeys">
	تسجيل الدخول إلى <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> باستخدام مفاتيح المصادقة Keys
</h2>

<p>
	يُنصح لتسجيل الدخول إلى نظام بعيد استخدام كلمات المرور passwords أو مفاتيح المصادقة keys والتي تتصف بأنها أسرع وأكثر أمانًا من كلمات المرور.
</p>

<h3 id="-1">
	آلية عمل المصادقة المعتمدة على المفاتيح
</h3>

<p>
	تعمل المصادقة المعتمدة على مفاتيح المصادقة عن طريق إنشاء زوج من المفاتيح: مفتاح خاص private key ومفتاح عام public key. يوجد المفتاح الخاص على جهاز العميل وهو سرّي، أما المفتاح العام فيمكن إعطاؤه لأي شخص أو وضعه على أي خادم نرغب الوصول إليه.
</p>

<p>
	عندما نحاول الاتصال باستخدام زوج من المفاتيح، نستخدم الخادم المفتاح العام لإنشاء رسالة محمية لحاسوب العميل لا يمكن قراءتها إلا باستخدام المفتاح الخاص. بعد ذلك، يرسل حاسوب العميل الاستجابة المناسبة إلى الخادم وسيعرف الخادم أن العميل يُسمح له بالاتصال. تُنفَّذ هذه العملية تلقائيًا بعد ضبط إعدادات المفاتيح.
</p>

<h3 id="ssh-3">
	كيفية إنشاء مفاتيح المصادقة في بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>
</h3>

<p>
	يجب إنشاء مفاتيح المصادقة في بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> على الحاسوب الذي سنسجل الدخول منه، أي جهازنا المحلي. نكتب ما يلي في سطر الأوامر:
</p>

<pre class="ipsCode">ssh-keygen -t rsa
</pre>

<p>
	قد يُطلب منا تعيين كلمة مرور على ملفات المفاتيح نفسها، ولكن هذا الأمر غير شائع. يجب الضغط على مفتاح Enter لقبول الإعدادات الافتراضية. وستُنشأ المفاتيح في المجلد <code>‎~/.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr>/id_rsa.pub</code> و المجلد <code>‎~/.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr>/id_rsa</code>.
</p>

<p>
	نغيّر مكان إنشاء المفاتيح إلى المجلد <code>‎.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr></code>باستخدام الأمر التالي:
</p>

<pre class="ipsCode">cd ~/.ssh
</pre>

<p>
	نستعرض سماحيات الملف باستخدام الأمر:
</p>

<pre class="ipsCode">ls -l
</pre>

<p>
	وسنحصل على الخرج التالي:
</p>

<pre class="ipsCode">-rw-r--r-- 1 demo demo  807 Sep  9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep  9 23:13 id_rsa
-rw-r--r-- 1 demo demo  396 Sep  9 23:13 id_rsa.pub
</pre>

<p>
	نلاحظ أن الملف <code>id_rsa</code> قابل القراءة والكتابة بواسطة المالك فقط، مما يساعد على إبقاء الملف سريًّا. أما الملف <code>id_rsa.pub</code> فيمكن مشاركته وله سماحيات تمكّن ذلك.
</p>

<h3 id="-2">
	نقل المفاتيح العامة إلى الخادم
</h3>

<p>
	إن فعّلنا الوصول إلى الخادم باستخدام كلمة المرور، فبإمكاننا نسخ مفتاح المرور العام إلى الخادم باستخدام الأمر التالي:
</p>

<pre class="ipsCode">ssh-copy-id remote_host
</pre>

<p>
	سيؤدي الأمر إلى إنشاء جلسة <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>، وبعد إدخال كلمة المرور، سيُنسخ المفتاح العام إلى ملف المفاتيح المعتمدة authorized keys في الخادم، مما يسمح لنا بتسجيل الدخول دون كلمة المرور في المرة القادمة.
</p>

<h2 id="ssh-4">
	الخيارات المتاحة لعميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>
</h2>

<p>
	هناك خيارات عدة عند الاتصال عبر بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>، بعضها قد يكون ضروريًا لمطابقة الإعدادات الموجودة في sshd عند المضيف البعيد remote host. مثلًا، إذا غيّرنا رقم المنفذ في إعدادات sshd، فعلينا تغييره عند العميل باستخدام الأمر التالي:
</p>

<pre class="ipsCode">ssh -p port_number remote_host
</pre>

<p>
	<strong>ملاحظة:</strong>: يُعدَ تغيير منفذ بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr> طريقةً مناسبةً لزيادة الأمان، فإذا كنا نسمح بالاتصال بخادم معروف عبر بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr> على المنفذ 22 كالمعتاد، ووضعنا كلمة مرور، فمن المحتمل أن نتعرض لمحاولات تسجيل دخول آلية عديدة automated logins. لكن، لا يُعدّ استخدام مفاتيح المصادقة وتشغيل بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr> على منفذ غير المنفذ المعتاد الحل الأمني الأمثل، ولكنه يفيد في الحد من الهجمات الآلية.
</p>

<p>
	إذا أردنا تنفيذ أمر واحد فقط على النظام البعيد، فيمكن تحديده بعد المضيف، كما يلي:
</p>

<pre class="ipsCode">ssh remote_host command_to_run
</pre>

<p>
	سنتصل بالنظام البعيد وسيُنَفذ الأمر بعد إدخال مفتاح المرور. إن كانت خاصية <strong>X11 Forwarding</strong> مفعلةً على كلا الجهازين، فيمكننا تفعيل ميزاتها باستخدام الأمر التالي:
</p>

<pre class="ipsCode">ssh -X remote_host
</pre>

<p>
	بشرط توفر الأدوات المناسبة لذلك على حاسوبنا، فبرامج واجهة المستخدم الرسومية التي نستخدمها على النظام البعيد ستُشَغّل الآن على نظامنا المحلي.
</p>

<h2 id="-3">
	إلغاء التحقق من كلمة المرور
</h2>

<p>
	يمكن عند إنشاء مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>، تحسين أمان الخادم وتعطيل مصادقة كلمة المرور، وتمكين تسجيل الدخول إلى الخادم من خلال المفتاح الخاص المقترن بالمفتاح العام الذي نبّته على الخادم.
</p>

<p>
	<strong>تنبيه:</strong> قبل متابعة هذه الخطوة، يتوجب التأكد من تثبيت مفتاح عام على الخادم. وإلا لن نستطيع تسجيل الدخول!
</p>

<p>
	نفتح ملف إعدادات sshd كمستخدم مسؤول root user أو أو مستخدم يتمتع بامتيازات sudo باستخدام الأمر التالي:
</p>

<pre class="ipsCode">sudo nano /etc/ssh/sshd_config
</pre>

<p>
	نبحث عن سطر <code>Password Authentication</code> ثم نزيل التعليق عنه بمسح رمز <code>#</code>، ونغيّر قيمته إلى القيمة <code>no</code>:
</p>

<pre class="ipsCode">PasswordAuthentication no
</pre>

<p>
	أما الخيار <code>PubkeyAuthentication</code> و <code>ChallengeResponseAuthentication</code> فلا يحتاجان إلى تعديل، شريطة ألا نكون عدلنا هذا الملف، إذ يجب تركهما على الضبط الإفتراضي:
</p>

<pre class="ipsCode">PubkeyAuthentication yes
ChallengeResponseAuthentication no
</pre>

<p>
	نحفظ الملف ونغلقه بعد الانتهاء من التعديلات. ثم نعيد تحميل برنامج <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></abbr>:
</p>

<pre class="ipsCode">sudo systemctl reload ssh
</pre>

<p>
	وبهكذا نكون قد ألغينا التحقق من كلمة المرور، وفعّلنا خيار الوصول إلى الخادم حصرًا عبر مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>.
</p>

<h2 id="-4">
	الخاتمة
</h2>

<p>
	شرحنا في هذا المقال كيفية استخدام بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> وهو أمر مفيد جدًا في مجال الحوسبة السحابية، وسنحتاج أثناء استخدام الخيارات المتنوعة مزيدًا من الميزات المتقدمة التي من شأنها تسهيل عملنا. لهذا بقي بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> شائع الاستخدام لأنه آمن وصغير الحجم ومفيد في الكثير من الحالات.
</p>

<p>
	ترجمة ، وبتصرّف، للمقال <a href="https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server" rel="external nofollow">How To Use <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> to Connect to a Remote Server</a> لكاتبه Justin Ellingwood.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/devops/security/ssh/%D9%85%D8%A7-%D9%87%D9%8A-%D8%AA%D9%82%D9%86%D9%8A%D8%A9-ssh%D8%9F-r793/" rel="">ما هي تقنية <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/security/ssh/%D8%A3%D9%86%D9%81%D8%A7%D9%82-ssh%D8%8C-%D9%85%D8%A7%D9%87%D9%8A%D8%AA%D9%87%D8%A7-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D9%87%D8%A7-r76/" rel="">أنفاق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr>، ماهيتها وكيفية إعدادها</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/security/ssh/%D9%83%D9%8A%D9%81%D9%8A%D9%91%D8%A9-%D9%85%D9%86%D8%B9-ssh-%D9%85%D9%86-%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%AC%D9%84%D8%B3%D8%A7%D8%AA-r391/" rel="">كيفيّة منع <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> من فصل الجلسات</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B7%D8%B1%D9%81%D9%8A%D9%91%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-terminal-r18/" rel="">مدخل إلى طرفيّة لينكس Linux Terminal</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">837</guid><pubDate>Sat, 22 Feb 2025 15:07:00 +0000</pubDate></item><item><title>&#x645;&#x627; &#x647;&#x64A; &#x62A;&#x642;&#x646;&#x64A;&#x629; SSH&#x61F;</title><link>https://academy.hsoub.com/devops/security/ssh/%D9%85%D8%A7-%D9%87%D9%8A-%D8%AA%D9%82%D9%86%D9%8A%D8%A9-ssh%D8%9F-r793/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/ssh.png.f380c64432c3d6cefac4f7b3c2c2b379.png" /></p>
<p>
	في هذا الفيديو نشرح بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> وآلية عمله وأماكن استخدامه، حيث أن بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></abbr> شائع جدًا وله استخدامات عديدة في مجالات مختلفة، خصوصًا في مجالات الحماية والأمان حيث يستخدم لجعل الاتصالات آمنة سواء عبر المصداقة بكلمة السر أو بالمفاتيح.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="603" id="ips_uid_152_5" src="https://academy.hsoub.com/applications/core/interface/index.html" title="ما هي تقنية SSH" width="1072" data-embed-src="https://www.youtube.com/embed/CGDYjTTDOYg"></iframe>
</p>

<p>
	إذا أردت التعرف أكثر على علوم الحاسوب، فننصحك بالانضمام إلى <a href="https://academy.hsoub.com/learn/computer-science/" rel="">دورة علوم الحاسوب</a>، ولا تنسَ الاستعانة خلال رحلة تعلمك وعملك بتوثيقات <a href="https://wiki.hsoub.com/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9" rel="external">موسوعة حسوب</a> المجانية. وإذا أردت متابعة المعلومات البرمجية العلمية مكتوبة فيمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/" rel="">قسم البرمجة في أكاديمية حسوب</a>، كما يمكنك متابعة جديد الفيديوهات التقنية المتاحة على <a href="https://www.youtube.com/@HsoubAcademy" rel="external nofollow">يوتيوب أكاديمية حسوب</a> مجانًا.
</p>
]]></description><guid isPermaLink="false">793</guid><pubDate>Wed, 30 Nov 2022 15:00:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x62A;&#x623;&#x645;&#x64A;&#x646; &#x645;&#x648;&#x642;&#x639; &#x648;&#x648;&#x631;&#x62F;&#x628;&#x631;&#x64A;&#x633; &#x639;&#x628;&#x631; &#x637;&#x628;&#x642;&#x629; &#x627;&#x62A;&#x635;&#x627;&#x644; &#x622;&#x645;&#x646;&#x629; SSH</title><link>https://academy.hsoub.com/devops/security/ssh/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%A3%D9%85%D9%8A%D9%86-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%B9%D8%A8%D8%B1-%D8%B7%D8%A8%D9%82%D8%A9-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A2%D9%85%D9%86%D8%A9-ssh-r591/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/61dc1652d336c_--SSL---SSL--SSL-----SSL--SSL---.png.0e7b57edbd5260cf20ea1037063c9362.png.e8c8919c0e726635f508850baf9622a9.png" /></p>

<p>
	يوجد ثابتان تستطيع تعريفهما في ملف wp-config.php لتفعيل "طبقة المقابس الآمنة" Secure Socket Layer اختصارًا <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> من أجل الاتصال بموقعك وإدارته والتحكم به <a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D8%AA%D8%B3%D8%AC%D9%8A%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%AF%D8%AE%D9%88%D9%84-%D8%A8%D8%A3%D9%85%D8%A7%D9%86-r132/" rel="">بأمان</a>. لا يكفي أن تعرف هذين المتغيرين ضمن ملف إضافة ما بل يجب تعريفهما ضمن ملف wp-config.php ويجب أن <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%B9%D9%85%D9%84-ssl-%D9%88-https-%D9%85%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r278/" rel="">تضبط مسبقًا <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> على خادمك</a> قبل أن يعمل موقعك بسلاسة مع هذين المتحولين عند ضبط قيمتهما للقيمة True.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة</strong>: توقف استخدام الثابت FORCE_<em><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL_</abbr></em>LOGIN في الإصدار 4.0 من ووردبريس. من فضلك استخدم الثابت FORCE_<em><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL_</abbr></em>ADMIN.
		</p>
	</div>
</blockquote>

<h2>
	فرض تسجيل الدخول والوصول للوحة التحكم باستخدام <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>
</h2>

<p>
	يُمكن ضبط الثابت FORCE_<em><abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL_</abbr></em>ADMIN إلى القيمة True ضمن الملف wp-config.php لإجبار إتمام جلسات المدير وجميع عمليات تسجيل الدخول عبر <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_8" style="">
<span class="pln">define</span><span class="pun">(</span><span class="str">'FORCE_SSL_ADMIN'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span></pre>

<h2>
	استخدام خادم وكيل
</h2>

<p>
	إن كان موقع ووردبريس مُستضافًا خلف خادم وكيل عكسي reverse proxy يوفر <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> لكن الموقع نفسه مُستضاف بدون <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr>، سوف تُسبب هذه الإعدادات حلقة إعادة توجيه غير منتهية للطلبات، ولتجنب ذلك يجب عليك ضبط ووردبريس ليتعرف على ترويسة HTTP_<em>X_</em>FORWARDED_PROTO (على فرض أنك ضبطت الخادم الوكيل بشكل صحيح لضبط هذه الترويسة).
</p>

<p>
	انظر مثلًا:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_10" style="">
<span class="pln">define</span><span class="pun">(</span><span class="str">'FORCE_SSL_ADMIN'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">);</span><span class="pln">
</span><span class="com">// in some setups HTTP_X_FORWARDED_PROTO might contain </span><span class="pln">
</span><span class="com">// a comma-separated list e.g. http,https</span><span class="pln">
</span><span class="com">// so check for https existence</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">strpos</span><span class="pun">(</span><span class="pln">$_SERVER</span><span class="pun">[</span><span class="str">'HTTP_X_FORWARDED_PROTO'</span><span class="pun">],</span><span class="pln"> </span><span class="str">'https'</span><span class="pun">)</span><span class="pln"> </span><span class="pun">!==</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">)</span><span class="pln">
$_SERVER</span><span class="pun">[</span><span class="str">'HTTPS'</span><span class="pun">]=</span><span class="str">'on'</span><span class="pun">;</span></pre>

<h2>
	ضبط <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> لحالات مخصصة ولإصدارات ووردبريس قديمة
</h2>

<p>
	تتضمن بقية هذا المقال معلومات مخصصةً لمن يستخدم إصدارًا قديمًا من ووردبريس (يجب عليك التحديث لآخر إصدار) أو في حال كان تثبيت <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> لديك مختلف (مثلًا شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> لنطاق مختلف).
</p>

<p>
	تريد أحيانًا أن تعمل صفحة wp-admin بكاملها ضمن اتصال آمن باستخدام بروتوكول https حيث أن آلية العمل كالتالي:
</p>

<ol>
<li>
		اضبط استضافتين افتراضيتين Virtual Host بنفس الرابط (رابط المدونة) أحدهما آمن والآخر ليس آمنًا.
	</li>
	<li>
		ضمن الاستضافة الافتراضية المؤمنة عليك ضبط قواعد إعادة الكتابة التي توجه الزيارات لصفحات الموقع الغير إدارية إلى الموقع غير المؤمن.
	</li>
	<li>
		ضمن الاستضافة الافتراضية غير المؤمنة عليك ضبط قواعد إعادة الكتابة التي توجه زيارات صفحات المدير إلى الاستضافة المؤمنة.
	</li>
	<li>
		عليك استخدام مرشح (استخدم إضافة) يعمل على انتخاب الروابط ضمن صفحات المدير وعند تفعيله يُعيد كتابة روابط صفحات المدير باستخدام https وهذا يُغير ملفات تعريف الارتباط لتعمل فقط مع الاتصالات المُشفرة.
	</li>
</ol>
<p>
	إن المحتوى التعليمي التالي مُخصص للإصدار 1.5 من ووردبريس وخادم Apache الذي يُفعل وحدة mod_rewrite باستخدام قواعد إعادة الكتابة في ملف httpd.conf الذي يُمكن تعديله بسهولة ليتناسب مع خيارات الاستضافة الأخرى.
</p>

<h3>
	الاستضافات الافتراضية
</h3>

<p>
	تحتاج استضافةً افتراضيةً مُعدّةً للخادم المؤمن إضافةً إلى موقع غير مؤمن، وفي هذا المثال فإن الاستضافة الافتراضية المؤمنة تستخدم نفس المسار الرئيسي للاستضافة غير المؤمنة، وافتراضيًا تستطيع استخدام استضافة باسم مختلف مثل wpadmin.mysite.com وربطها مع المسار الرئيسي للخادم.
</p>

<p>
	اطلب من فضلك من مزود الخدمة لديك ضبط استضافة افتراضية مؤمنة أو إن كان لديك تحكم كامل بالاستضافة تستطيع ضبطها بنفسك. انتبه أنك <a href="http://httpd.apache.org/docs-2.0/ssl/ssl_faq.html#vhosts2" rel="external nofollow">لا تستطيع استخدام استضافة افتراضية معتمدةً على الاسم لتعريف خوادم <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> مختلفة</a>.
</p>

<h4>
	قواعد إعادة الكتابة للاستضافة غير المؤمنة
</h4>

<p>
	أضف القاعدة التالية ضمن ملف ‎.htaccess أو ملف httpd.conf لتوجيهك تلقائيًا للاستضافة المؤمنة عند تصفح الرابط <a href="http://mysite.com/wp-admin" ipsnoembed="false" rel="external nofollow">http://mysite.com/wp-admin</a> أو <a href="http://mysite.com/wp-login.php." ipsnoembed="false" rel="external nofollow">http://mysite.com/wp-login.php.</a>
</p>

<p>
	يجب أن تُضيف القواعد قبل كتلة قواعد ووردبريس:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_12" style="">
<span class="pln"> </span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">THE_REQUEST</span><span class="pun">}</span><span class="pln"> </span><span class="pun">^[</span><span class="pln">A</span><span class="pun">-</span><span class="pln">Z</span><span class="pun">]{</span><span class="lit">3</span><span class="pun">,</span><span class="lit">9</span><span class="pun">}</span><span class="pln">\ </span><span class="pun">/(.*)</span><span class="pln">\ HTTP</span><span class="pun">/</span><span class="pln"> </span><span class="pun">[</span><span class="pln">NC</span><span class="pun">]</span><span class="pln">
  </span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">HTTPS</span><span class="pun">}</span><span class="pln"> </span><span class="pun">!=</span><span class="pln">on </span><span class="pun">[</span><span class="pln">NC</span><span class="pun">]</span><span class="pln">
  </span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="str">/?(wp-admin/</span><span class="pun">|</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">login\.php</span><span class="pun">)</span><span class="pln"> https</span><span class="pun">:</span><span class="com">//mysite.com%{REQUEST_URI}%{QUERY_STRING} [R=301,QSA,L]</span></pre>

<p>
	إن كنت تستخدم قواعد إعادة الكتابة للروابط الدائمة عندها يجب أن يرد هذا السطر قبلها:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_14" style="">
<span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^.*</span><span class="pln">$ </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">S</span><span class="pun">=</span><span class="lit">40</span><span class="pun">]‎</span></pre>

<p>
	إن استخدام THE_REQUEST أمر مهم جدًا لأنه يضمن إعادة كتابة فقط طلبات <a href="https://academy.hsoub.com/programming/general/%d9%85%d8%af%d8%ae%d9%84-%d8%a5%d9%84%d9%89-http-r73/" rel="">http</a>.
</p>

<h4>
	قواعد إعادة الكتابة للاستضافة المؤمنة (اختياري)
</h4>

<p>
	قواعد إعادة الكتابة هذه اختيارية فهي تعطل الوصول العلني للموقع عبر اتصال مؤمن، وإن كنت تريد البقاء مُسجلًا دخولك للقسم العام من موقعك باستخدام الإضافة في الأسفل يجب ألا تُضيف هذه القواعد لأن الإضافة تُعطل ملفات تعريف الارتباط ضمن الاتصالات غير المشفرة.
</p>

<p>
	يجب أن تمتلك الاستضافة الافتراضية المؤمنة قاعدتين ضمن ملف ‎.htaccess أو ضمن ملف تعريف الاستضافة الافتراضية (ألق نظرة على <a href="%D8%B1%D8%A7%D8%A8%D8%B7" rel="">كيفية استخدام الروابط الدائمة</a> لمزيد من المعلومات حول قواعد إعادة الكتابة):
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_16" style="">
<span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">!^</span><span class="str">/wp-admin/</span><span class="pun">(.*)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">C</span><span class="pun">]</span><span class="pln">
   </span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="str">/(.*) http:/</span><span class="pun">/</span><span class="pln">www</span><span class="pun">.</span><span class="pln">mysite</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span><span class="pln">$1 </span><span class="pun">[</span><span class="pln">QSA</span><span class="pun">,</span><span class="pln">L</span><span class="pun">]</span></pre>

<p>
	تستثني القاعدة الأولى مسار wp-admin من القاعدة الثانية التي توجه زيارات الموقع المؤمن إلى الموقع غير المؤمن للحفاظ على تجربة مريحة للمستخدم.
</p>

<h4>
	ضبط رابط ووردبريس
</h4>

<p>
	لكي تعمل بعض إضافات ووردبريس ولأسباب أخرى أيضًا عليك ضبط رابط ووردبريس ضمن الخيارات ليستخدم بروتوكول https، وذلك من خلال ضبط الرابط على الشكل التالي <a href="https://mysite.com." ipsnoembed="false" rel="external nofollow">https://mysite.com.</a> يجب ألا تُغير رابط المدونة.
</p>

<p>
	إليك مثال عن ضبط Stanzas:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_18" style="">
<span class="tag">&lt;VirtualHost</span><span class="pln"> </span><span class="atn">nnn</span><span class="pln">.</span><span class="atn">nnn</span><span class="pln">.</span><span class="atn">nnn</span><span class="pln">.</span><span class="atn">nnn:443</span><span class="tag">&gt;</span><span class="pln">
        ServerName www.mysite.com

        SSLEngine On
        SSLCertificateFile    /etc/apache2/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/thissite.crt
        SSLCertificateKeyFile /etc/apache2/<abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>/thissite.pem
        SetEnvIf User-Agent ".*MSIE.*" nokeepalive <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>-unclean-shutdown

        DocumentRoot /var/www/mysite

        </span><span class="tag">&lt;IfModule</span><span class="pln"> </span><span class="atn">mod_rewrite</span><span class="pln">.</span><span class="atn">c</span><span class="tag">&gt;</span><span class="pln">
                RewriteEngine On
                RewriteRule !^/wp-(admin|includes)/(.*) - [C]
                RewriteRule ^/(.*) http://www.mysite.com/$1 [QSA,L]
        </span><span class="tag">&lt;/IfModule&gt;</span><span class="pln">
        ...
</span><span class="tag">&lt;/VirtualHost&gt;</span><span class="pln">

# Insecure site
</span><span class="tag">&lt;VirtualHost</span><span class="pln"> *</span><span class="tag">&gt;</span><span class="pln">
        ServerName www.mysite.com

        DocumentRoot /var/www/ii/mysite

        </span><span class="tag">&lt;Directory</span><span class="pln"> </span><span class="pun">/</span><span class="atn">var</span><span class="pun">/</span><span class="atn">www</span><span class="pun">/</span><span class="atn">ii</span><span class="pun">/</span><span class="atn">mysite</span><span class="pln"> </span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;IfModule</span><span class="pln"> </span><span class="atn">mod_rewrite</span><span class="pln">.</span><span class="atn">c</span><span class="tag">&gt;</span><span class="pln">
                        RewriteEngine On
                        RewriteBase /
                        RewriteCond %{REQUEST_FILENAME} -f [OR]
                        RewriteCond %{REQUEST_FILENAME} -d
                        RewriteRule ^wp-admin/(.*) https://www.mysite.com/wp-admin/$1 [C]
                        RewriteRule ^.*$ - [S=40]
                        RewriteRule ^feed/(feed|rdf|rss|rss2|atom)/?$ /index.php?&amp;feed=$1 [QSA,L]
                        ...
                </span><span class="tag">&lt;/IfModule&gt;</span><span class="pln">
         </span><span class="tag">&lt;/Directory&gt;</span><span class="pln">
         ...
</span><span class="tag">&lt;/VirtualHost&gt;</span></pre>

<p>
	<strong>ملاحظة</strong>: الإعدادات التالية غير متوافقة 100% مع إصدار ووردبريس 2.8 وما بعده حيث يستخدم ووردبريس 2.8 ملفات من مجلد wp-includes. يُمكن أن تُسبب إعادة التوجيه التي تنفذها أول مجموعة من القواعد بعض التحذيرات الأمنية لبعض المستخدمين. ألق نظرةً على <a href="https://core.trac.wordpress.org/ticket/10079" rel="external nofollow">الرابط</a> لمزيد من المعلومات.
</p>

<h4>
	قواعد إعادة الكتابة لتسجيل الدخول والتسجيل
</h4>

<p>
	إن استخدام <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> للتسجيل بالموقع ولمن أنشأ حسابه في أو سجل دخوله إلى الموقع أمر جيد، لذا عليك الاطلاع على قواعد إعادة الكتابة التالية.
</p>

<p>
	مثال غير مؤمن:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_20" style="">
<span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="str">/wp-(admin|login|register)(.*) https:/</span><span class="pun">/</span><span class="pln">www</span><span class="pun">.</span><span class="pln">mysite</span><span class="pun">.</span><span class="pln">com</span><span class="pun">/</span><span class="pln">wp</span><span class="pun">-</span><span class="pln">$1$2 </span><span class="pun">[</span><span class="pln">C</span><span class="pun">]</span></pre>

<p>
	مثال مؤمن:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_22" style="">
<span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">!^/</span><span class="pln">wp</span><span class="pun">-(</span><span class="pln">admin</span><span class="pun">|</span><span class="pln">login</span><span class="pun">|</span><span class="kwd">register</span><span class="pun">)(.*)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">C</span><span class="pun">]</span></pre>

<h4>
	قواعد إعادة الكتابة لتشغيل الموقع على المنفذ 443 أو المنفذ 80
</h4>

<p>
	انظر مثال قواعد إعادة الكتابة لتشغيل الموقع على المنفذ 443 أو المنفذ 80:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_24" style="">
<span class="com"># BEGIN WordPress</span><span class="pln">
</span><span class="pun">&lt;</span><span class="typ">IfModule</span><span class="pln"> mod_rewrite</span><span class="pun">.</span><span class="pln">c</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">RewriteEngine</span><span class="pln"> </span><span class="typ">On</span><span class="pln">
</span><span class="typ">RewriteBase</span><span class="pln"> </span><span class="pun">/</span><span class="pln">

</span><span class="com"># For a site running on port 443 or else (http over <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">ssl</abbr>)</span><span class="pln">
</span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">SERVER_PORT</span><span class="pun">}</span><span class="pln">  </span><span class="pun">!^</span><span class="lit">80</span><span class="pln">$
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">!^</span><span class="pln">wp</span><span class="pun">-(</span><span class="pln">admin</span><span class="pun">|</span><span class="pln">login</span><span class="pun">|</span><span class="kwd">register</span><span class="pun">)(.*)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="pln">C</span><span class="pun">]</span><span class="pln">
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^(.*)</span><span class="pln">$ http</span><span class="pun">:</span><span class="com">//%{SERVER_NAME}/$1 [L]</span><span class="pln">

</span><span class="com"># For a site running on port 80 (http)</span><span class="pln">
</span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">SERVER_PORT</span><span class="pun">}</span><span class="pln">  </span><span class="pun">^</span><span class="lit">80</span><span class="pln">$
</span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">REQUEST_FILENAME</span><span class="pun">}</span><span class="pln"> </span><span class="pun">-</span><span class="pln">f </span><span class="pun">[</span><span class="pln">OR</span><span class="pun">]</span><span class="pln">
</span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">REQUEST_FILENAME</span><span class="pun">}</span><span class="pln"> </span><span class="pun">-</span><span class="pln">d
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">^</span><span class="pln">wp</span><span class="pun">-(</span><span class="pln">admin</span><span class="pun">|</span><span class="pln">login</span><span class="pun">|</span><span class="kwd">register</span><span class="pun">)(.*)</span><span class="pln"> https</span><span class="pun">:</span><span class="com">//%{SERVER_NAME}:10001/wp-$1$2 [L]</span><span class="pln">

</span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">SERVER_PORT</span><span class="pun">}</span><span class="pln">  </span><span class="pun">^</span><span class="lit">80</span><span class="pln">$
</span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">REQUEST_FILENAME</span><span class="pun">}</span><span class="pln"> </span><span class="pun">!-</span><span class="pln">f
</span><span class="typ">RewriteCond</span><span class="pln"> </span><span class="pun">%{</span><span class="pln">REQUEST_FILENAME</span><span class="pun">}</span><span class="pln"> </span><span class="pun">!-</span><span class="pln">d
</span><span class="typ">RewriteRule</span><span class="pln"> </span><span class="pun">.</span><span class="pln"> </span><span class="pun">/</span><span class="pln">index</span><span class="pun">.</span><span class="pln">php </span><span class="pun">[</span><span class="pln">L</span><span class="pun">]</span><span class="pln">

</span><span class="pun">&lt;/</span><span class="typ">IfModule</span><span class="pun">&gt;</span></pre>

<h3>
	الملخص
</h3>

<p>
	هذه الطريقة لا تُصلح <a href="https://wordpress.org/support/topic/24558#post-154136" rel="external nofollow">المشاكل الأمنية المتأصلة</a> في ووردبريس ولا تحميك ضد هجوم رجل في الوسط man-in-the-middle attacks أو من أي مخاطر أخرى يُمكن أن توقف الاتصال المؤمن لكنها تُصعب على المخترقين سرقة ملفات تعريف الارتباط و/أو ترويسة التحقق لاستخدامها وانتحال شخصيتك والدخول للموقع إلى لوحة التحكم، كما أنها تُضعف قدرة المهاجم على الاطلاع على محتواك وهو أمر مهم للمدونات القانونية التي تتضمن مسودات تحتاج حماية صارمة.
</p>

<h3>
	التحقق
</h3>

<p>
	تُشير السجلات ضمن الخادم إلى أن جميع طلبات GET و POST تعمل ضمن اتصال <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> وجميع الزيارات <a href="https://academy.hsoub.com/apps/web/wordpress/%D9%84%D9%85%D8%AD%D8%A9-%D8%B9%D9%86-%D9%84%D9%88%D8%AD%D8%A9-%D8%AA%D8%AD%D9%83%D9%85-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r394/" rel="">للوحة تحكم ووردبريس</a> للاستضافة غير المؤمنة توجه إلى الاستضافة المؤمنة.
</p>

<p>
	عينة من سجل POST:
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_178_26" style="">
<span class="pun">[</span><span class="typ">Thu</span><span class="pln"> </span><span class="typ">Apr</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">09</span><span class="pun">:</span><span class="lit">34</span><span class="pun">:</span><span class="lit">33</span><span class="pln"> </span><span class="lit">2005</span><span class="pun">]</span><span class="pln"> </span><span class="pun">[</span><span class="pln">info</span><span class="pun">]</span><span class="pln"> </span><span class="typ">Subsequent</span><span class="pln"> </span><span class="pun">(</span><span class="typ">No</span><span class="pun">.</span><span class="lit">5</span><span class="pun">)</span><span class="pln"> HTTPS request received </span><span class="kwd">for</span><span class="pln"> child </span><span class="lit">6</span><span class="pln"> </span><span class="pun">(</span><span class="pln">server foo</span><span class="pun">.</span><span class="pln">com</span><span class="pun">:</span><span class="lit">443</span><span class="pun">)</span><span class="pln">
xx</span><span class="pun">.</span><span class="pln">xxx</span><span class="pun">.</span><span class="pln">xxx</span><span class="pun">.</span><span class="pln">xxx </span><span class="pun">-</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="lit">28</span><span class="pun">/</span><span class="typ">Apr</span><span class="pun">/</span><span class="lit">2005</span><span class="pun">:</span><span class="lit">09</span><span class="pun">:</span><span class="lit">34</span><span class="pun">:</span><span class="lit">33</span><span class="pln"> </span><span class="pun">-</span><span class="lit">0500</span><span class="pun">]</span><span class="pln"> </span><span class="str">"POST /wp-admin/post.php HTTP/1.1"</span><span class="pln"> </span><span class="lit">302</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="str">"https://foo.com/wp-admin/post.php?acti
on=edit&amp;post=71"</span><span class="pln"> </span><span class="str">"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3"</span></pre>

<p>
	تستطيع التأكد بمزيد من الاختبارات باستخدام أدوات تحليل للشبكة ومتتبع رزم.
</p>

<h3>
	القيود
</h3>

<p>
	يفترض الكاتب أنه إن خزّن المستخدم <a href="https://academy.hsoub.com/programming/php/%D8%A7%D9%84%D8%AC%D9%84%D8%B3%D8%A7%D8%AA-%D9%88%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%AA%D8%B9%D8%B1%D9%8A%D9%81-%D8%A7%D9%84%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D9%88%D9%85%D9%83%D8%AA%D8%A8%D8%A9-curl-%D9%81%D9%8A-php-r1081/" rel="">ملفات تعريف الارتباط</a> ضمن متصفحه ليتذكر كلمة المرور (غير معتمد على حقول النموذج إنما عند استخدام طرق تحقق خارجية) ثم زار الرابط <a href="http://mysite.com/wp-admin" ipsnoembed="false" rel="external nofollow">http://mysite.com/wp-admin</a> سوف تُرسل الحزم دون تشفير ويُمكن اعتراض ترويسة التحقق وملفات تعريف الارتباط، لذلك ولضمان أعلى درجة أمان يجب على المستخدم استخدام https أو الدخول دائمًا عند بداية كل جلسة.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://wordpress.org/support/article/administration-over-ssl/" rel="external nofollow">Administration Over <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr></a> من موقع <a href="https://wordpress.org/" rel="external nofollow">ووردبريس</a>.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D9%87%D9%84-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A2%D9%85%D9%86%D8%9F-r348/" rel="">هل ووردبريس آمن؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/php/wordpress/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D9%88%D8%AA%D8%B3%D8%AC%D9%8A%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%AF%D8%AE%D9%88%D9%84-%D8%A8%D8%A3%D9%85%D8%A7%D9%86-r132/" rel="">إدارة ووردبريس وتسجيلات الدخول بأمان</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%d9%83%d9%8a%d9%81%d9%8a%d8%a9-%d8%aa%d8%ab%d8%a8%d9%8a%d8%aa-%d8%b4%d9%87%d8%a7%d8%af%d8%a9-ssl-%d9%85%d9%86-%d8%b3%d9%84%d8%b7%d8%a9-%d8%b4%d9%87%d8%a7%d8%af%d8%a7%d8%aa-%d8%aa%d8%ac%d8%a7%d8%b1%d9%8a%d8%a9-%d8%a7%d9%84%d9%85%d9%81%d8%a7%d9%87%d9%8a%d9%85-%d8%a7%d9%84%d8%a3%d8%b3%d8%a7%d8%b3%d9%8a%d8%a9-r146/" rel="">كيفية تثبيت شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr> من سلطة شهادات تجارية: المفاهيم الأساسية</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/web/wordpress/%D8%A7%D8%B3%D8%AA%D8%A8%D8%AF%D8%A7%D9%84-%D8%B1%D9%88%D8%A7%D8%A8%D8%B7-%D8%A7%D9%84%D8%B5%D9%88%D8%B1-%D8%B9%D9%84%D9%89-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%A8%D8%B9%D8%AF-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%B4%D9%87%D8%A7%D8%AF%D8%A9-ssl-r151/" rel="">استبدال روابط الصور على مواقع ووردبريس بعد تثبيت شهادة <abbr title="Secure Socket Layer | طبقة المنافذ الآمنة">SSL</abbr></a>
	</li>
</ul>
]]></description><guid isPermaLink="false">591</guid><pubDate>Sun, 30 Jan 2022 17:00:00 +0000</pubDate></item><item><title>&#x62F;&#x644;&#x64A;&#x644; &#x628;&#x635;&#x631;&#x64A; &#x644;&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x623;&#x646;&#x641;&#x627;&#x642; SSH</title><link>https://academy.hsoub.com/devops/security/ssh/%D8%AF%D9%84%D9%8A%D9%84-%D8%A8%D8%B5%D8%B1%D9%8A-%D9%84%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A3%D9%86%D9%81%D8%A7%D9%82-ssh-r508/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_07/60df6dd84f475_-----SSH.png.6024b04b28d1eee2b0710f3c3a88b087.png" /></p>

<p>
	يشرح هذا المقال حالات استخدام أنفاق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> مع أمثلة على ذلك، كما يوضح تدفق البيانات بصريًا. حيث يُبين الشكل أدناه مثلًا نفقًا عكسيًا يسمح لمستخدمي عنوان IP محدد (1.2.3.4) بالوصول إلى المنفذ 80 في عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> عبر خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69464" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431aeb50b_VisualguidetoSSHtunnels.png.dd834b9f431a051dc4925373d75acc1b.png" rel=""><img alt="Visual guide to SSH tunnels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69464" data-unique="1b35mywba" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431aeb50b_VisualguidetoSSHtunnels.png.dd834b9f431a051dc4925373d75acc1b.png"></a>
</p>

<p>
	أنفاق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> هي اتصالات مُعماة (خَفيَّة) تَستخدم بروتوكول TCP بين عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، وخوادم تسمح بدخول البيانات من جانب واحد من النفق، لتخرج بشفافية وموثوقية من المنفذ الآخر. لقد أُستخدم هذا المصطلح سابقًا لوصف التنفيق عبر واجهات شبكات TUN/TAP الافتراضية لكنه الآن يُشير إلى إعادة توجيه منفذ <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> أي <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> port forwarding، وتتضمن حالات استخدامه النقاط التالية:
</p>

<ul>
<li>
		توفير قنوات مُشفّرة لحماية البروتوكولات التي تستخدِم نصوصًا غير مُشفرة.
	</li>
	<li>
		فتح أبواب خلفية إلى شبكات خاصة.
	</li>
	<li>
		تجاوز الجدران النارية.
	</li>
</ul>
<h2>
	إعادة توجيه المنفذ
</h2>

<p>
	نقصد بمصطلح إعادة توجيه المنفذ Port forwarding، عملية توجيه حركة البيانات من منفذ ما إلى آخر سواءً كان المنفذ موجود على خادم محلي أو بعيد.
</p>

<h3>
	إعادة التوجيه إلى منفذ محلي
</h3>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69475" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431ed21c1_VisualguidetoSSHtunnels2.png.db60e6808cefbc8ac6c16bbfad1044a3.png" rel=""><img alt="Visual guide to SSH tunnels2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69475" data-unique="76yhnrhi8" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431ed21c1_VisualguidetoSSHtunnels2.png.db60e6808cefbc8ac6c16bbfad1044a3.png"></a>
</p>

<p>
	تتيح لك إعادة توجيه المنفذ المحلي، إمكانية التحكم في حركة البيانات في عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> وتوجيهه إلى هدف ما من خلال خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>. حيث يسمح لك ذلك بالوصول إلى الخدمات البعيدة باستخدام اتصالات مُشفرة كما لو كانت خدمات محلية. وفي مثال على تلك الحالات الآتية:
</p>

<ul>
<li>
		الوصول إلى خدمات بعيدة، مثل: redis، وmemcached وغيرها، والاستجابة لاتصالات IP الداخلية.
	</li>
	<li>
		الوصول إلى الموارد المحلية والمتاحة في شبكة الاتصال الخاصة.
	</li>
	<li>
		إنشاء توكيلات لطلبات اتصال إلى خدمة بعيدة بشفافية وموثوقية.
	</li>
</ul>
<h3>
	إعادة التوجيه إلى منفذ بعيد
</h3>

<p style="text-align: center;">
	 
</p>

<p>
	تسمح لك عملية إعادة توجيه المنفذ البعيد بالتحكم في حركة البيانات على خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> وتوجيهها إلى منفذ مُحدد، عبر عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> أو خادم بعيد آخر. وهكذا يستطيع مستخدمو الشبكات العامة الوصول إلى الموارد الموجودة في الشبكات الخاصة، وفي مثال على ذلك ما يأتي:
</p>

<ul>
<li>
		إتاحة الوصول إلى خادم تطوير ما على شبكة عامة.
	</li>
	<li>
		السماح لعنوان IP محدد بالوصول إلى الموارد البعيدة والموجودة على شبكة خاصة.
	</li>
</ul>
<h3>
	إعادة توجيه المنفذ الديناميكي
</h3>

<p style="text-align: center;">
	 
</p>

<p>
	تعتمد عملية إعادة التوجيه الديناميكية على فتح وكيل بروكسي SOCKS في عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، وذلك للسماح بإعادة توجيه تدفق بيانات TCP عبر خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> إلى خادم بعيد.
</p>

<h3>
	إعادة التوجيه من منافذ مميزة
</h3>

<p>
	إذا أردت فتح منفذ مميز (أي منفذ من 1 إلى 1023) لإعادة توجيه حركة البيانات، فستحتاج إلى تشغيل بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> مستخدمًا صلاحيات الجذر في النظام الذي تستعمله لفتح ذلك المنفذ كما يوضح المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_6359_6" style="">
<span class="pln">sudo <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">L </span><span class="lit">80</span><span class="pun">:</span><span class="pln">example</span><span class="pun">.</span><span class="pln">com</span><span class="pun">:</span><span class="lit">80</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	 
</p>

<p>
	<strong>وسوم سطر أوامر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></strong>
</p>

<p>
	هذه هي بعض رايات سطر أوامر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> المُفيدة والتي يمكنك استخدامها عند إنشاء أنفاق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>:
</p>

<ul>
<li>
		<code>‎-f</code> يُنشئ فرعًا من عملية <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> في الخلفية.
	</li>
	<li>
		<code>‎-n</code> يمنع إمكانية القراءة من تيارات الإدخال المُوحّد STDIN.
	</li>
	<li>
		<code>‎-N</code> يمنع تشغيل الأوامر البعيدة ويُستخدم فقط عند إعادة توجيه المنافذ.
	</li>
	<li>
		<code>‎-T</code> يُعطل توزيع أوامر أنظمة يونكس TTY.
	</li>
</ul>
<p>
	يوضح الاستعلام التالي كيفية إنشاء نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> في الخلفية يعمل على إعادة توجيه منفذ محلي عبر خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3663_8" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">fnNT </span><span class="pun">-</span><span class="pln">L </span><span class="lit">127.0</span><span class="pun">.</span><span class="lit">0.1</span><span class="pun">:</span><span class="lit">8080</span><span class="pun">:</span><span class="pln">example</span><span class="pun">.</span><span class="pln">org</span><span class="pun">:</span><span class="lit">80</span></pre>

<p>
	سنتجاهل استخدام الرايات سابقة الذكر خلال الأمثلة التالية بهدف الإيجاز.
</p>

<h3>
	إعادة توجيه المنفذ المحلي
</h3>

<p>
	نعني بإعادة توجيه المنفذ المحلي، عملية إعادة توجيه الاتصالات من منفذ على نظام محلِّي إلى منفذ على خادم بعيد:
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_5860_10" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">L </span><span class="lit">127.0</span><span class="pun">.</span><span class="lit">0.1</span><span class="pun">:</span><span class="lit">8080</span><span class="pun">:</span><span class="pln">example</span><span class="pun">.</span><span class="pln">org</span><span class="pun">:</span><span class="lit">80</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	 
</p>

<p>
	يُعيد الاستعلام أعلاه توجيه الاتصالات لعنوان 127.0.0.1:8080 في نظامك المحلي إلى منفذ 80 الخاص بعنوان <code>example.org</code>، وذلك عبر خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>. في هذا المثال سيُغلف نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> تدفق البيانات بين نظامك المحلي وخادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، لكن ذلك لا ينطبق على حركة البيانات بين خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> وعنوان <code>example.org</code>. أي أنه من منظور <code>example.org</code>، فإن مصدر حركة البيانات الواردة هو خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_12" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">L </span><span class="lit">8080</span><span class="pun">:</span><span class="pln">example</span><span class="pun">.</span><span class="pln">org</span><span class="pun">:</span><span class="lit">80</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_14" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">L </span><span class="pun">*:</span><span class="lit">8080</span><span class="pun">:</span><span class="pln">example</span><span class="pun">.</span><span class="pln">org</span><span class="pun">:</span><span class="lit">80</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	 
</p>

<p>
	يُعيد هذا المثال توجيه الاتصالات إلى منفذ 8080 في جميع واجهات نظامك المحلي إلى <code>example.org:80</code> عبر نفق إلى خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>:
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_16" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">L </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">0.1</span><span class="pun">:</span><span class="lit">5432</span><span class="pun">:</span><span class="lit">127.0</span><span class="pun">.</span><span class="lit">0.1</span><span class="pun">:</span><span class="lit">5432</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	 
</p>

<p>
	يُعيد المثال الموضح أعلاه توجيه الاتصالات الواردة إلى عنوان 192.168.0.1:5432 في نظامك المحلي، إلى عنوان 127.0.0.1:5432 في خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>. لاحظ أن عنوان 127.0.0.1 هنا يمثل الخادم المحلي من وجهة نظر خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>.
</p>

<p>
	<strong>إعدادات خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></strong>
</p>

<p>
	مع أن الإعدادات الافتراضية تكون مناسبةً عادةً، لكن تأكد من تفعيل تحويل اتصالات TCP في خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> على كل حال.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69490" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc43241b876_VisualguidetoSSHtunnels9.png.20d287c4253f4930a6cc31b2fb0d4a5a.png" rel=""><img alt="Visual guide to SSH tunnels9.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69490" data-unique="qeoi3nbmp" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc43241b876_VisualguidetoSSHtunnels9.png.20d287c4253f4930a6cc31b2fb0d4a5a.png"></a>
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_18" style="">
<span class="typ">AllowTcpForwarding</span><span class="pln"> yes</span></pre>

<p>
	إذا كنت تُجرى عملية إعادة توجيه المنافذ في واجهات بخلاف 127.0.0.1، فستحتاج إلى تفعيل <code>GatewayPorts</code> على نظامك المحلي عبر تعديل ملف <code>ssh_config</code>، أو عبر خيارات سطر الأوامر.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69465" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431b46894_VisualguidetoSSHtunnels10.png.44dcce0b3ebeea118db670f4e28105ab.png" rel=""><img alt="Visual guide to SSH tunnels10.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69465" data-unique="uc4la62p9" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431b46894_VisualguidetoSSHtunnels10.png.44dcce0b3ebeea118db670f4e28105ab.png"></a>
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_20" style="">
<span class="typ">GatewayPorts</span><span class="pln"> yes</span></pre>

<p>
	<strong>حالات الاستخدام</strong>
</p>

<p>
	إذا أردت استخدام اتصال آمن للوصول إلى خدمة بعيدة يمكنها التواصل باستخدام بروتوكول نص غير مُشفر، مثل: redis، وmemcached، واستطعت الوصول إلى إحدى تلك الخدمات في خادم بعيد بأمان عبر شبكة عامة؛ فيمكنك إنشاء نفق اتصال من نظامك المحلي إلى الخادم البعيد عوضًا عن جعله يستمع إلى الاتصالات في شبكة الإنترنت العامة.
</p>

<h3>
	إعادة توجيه المنفذ البعيد
</h3>

<p>
	يُقصد بإعادة توجيه المنفذ البعيد عملية إعادة توجيه منفذ على نظام بعيد إلى نظام آخر.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_22" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">R </span><span class="lit">8080</span><span class="pun">:</span><span class="pln">localhost</span><span class="pun">:</span><span class="lit">80</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69466" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431ba97ec_VisualguidetoSSHtunnels11.png.5d630ec5a87da35d0871f95800713ed1.png" rel=""><img alt="Visual guide to SSH tunnels11.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69466" data-unique="1debz3bea" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431ba97ec_VisualguidetoSSHtunnels11.png.5d630ec5a87da35d0871f95800713ed1.png"></a>
</p>

<p>
	يُعيد هذا المثال توجيه حركة البيانات من جميع الواجهات في منفذ 8080 على خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> إلى المنفذ 80 لمُضيفك المحلي localhost على حاسبك المحلي. فإذا كانت إحدى تلك الواجهات متاحةً لشبكة الإنترنت العامة، فإن حركة البيانات المتوجهة إلى منفذ 8080 سيُعاد توجيهها إلى نظامك المحلي.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_24" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">R </span><span class="lit">1.2</span><span class="pun">.</span><span class="lit">3.4</span><span class="pun">:</span><span class="lit">8080</span><span class="pun">:</span><span class="pln">localhost</span><span class="pun">:</span><span class="lit">80</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69467" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431c0e81e_VisualguidetoSSHtunnels12.png.f26249169afd43b218fac3adca32c143.png" rel=""><img alt="Visual guide to SSH tunnels12.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69467" data-unique="53ai49ch0" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431c0e81e_VisualguidetoSSHtunnels12.png.f26249169afd43b218fac3adca32c143.png"></a>
</p>

<p>
	يعمل الاستعلام أعلاه على إعادة توجيه حركة البيانات من منفذ 8080 الخاص بخادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> إلى منفذ 80 الخاص بالمُضيف المحلي في نظامك المحلي، بينما يسمح فقط لعنوان IP 1.2.3.4 بالوصول إلى مدخل نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> في خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>. استخدم خيار <code>GatewayPorts clientspecified</code> لإجراء هذه العملية على نحو سليم.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_27" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">R </span><span class="lit">8080</span><span class="pun">:</span><span class="pln">example</span><span class="pun">.</span><span class="pln">org</span><span class="pun">:</span><span class="lit">80</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69468" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431c55b8f_VisualguidetoSSHtunnels13.png.280853a823e7b314337177f509ba19bf.png" rel=""><img alt="Visual guide to SSH tunnels13.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69468" data-unique="9mv53rwty" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431c55b8f_VisualguidetoSSHtunnels13.png.280853a823e7b314337177f509ba19bf.png"></a>
</p>

<p>
	يُعيد هذا الاستعلام توجيه حركة البيانات من جميع الواجهات في عنوان <code><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>-server:8080</code> إلى عنوان <code>localhost:80</code> على نظامك المحلي. بحيث سيُعاد توجيه حركة البيانات تلك من نظامك المحلي إلى عنوان <code>example.org:80</code>. ومن وِجهة نظر <code>example.org</code>، فإن مصدر حركة البيانات هو نظامك المحلي.
</p>

<p>
	<strong>إعدادات خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></strong>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69469" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431cac39b_VisualguidetoSSHtunnels14.png.7475f8ab5fa385a61f8177bbada0701f.png" rel=""><img alt="Visual guide to SSH tunnels14.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69469" data-unique="0stj083g8" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431cac39b_VisualguidetoSSHtunnels14.png.7475f8ab5fa385a61f8177bbada0701f.png"></a>
</p>

<p>
	لا تسمح الإعدادات الافتراضية عادةً بالوصول إلى منافذ إعادة التوجيه من على شبكة الإنترنت العامة، حيث ستحتاج إلى إضافة الاستعلام التالي إلى ملف <code>sshd_config</code> الموجود في خادمك البعيد لتغيير ذلك والسماح بتدفق حركة البيانات من شبكة الإنترنت العامة إلى حاسبك المحلي.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_29" style="">
<span class="typ">GatewayPorts</span><span class="pln"> yes</span></pre>

<p>
	أو يمكنك تحديد أيّ من العملاء يُسمح بوصولهم عن طريق استخدام الاستعلام التالي في ملف <code>sshd_config</code> عوضًا عن السابق.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_33" style="">
<span class="typ">GatewayPorts</span><span class="pln"> clientspecified</span></pre>

<h3>
	إعادة توجيه المنفذ الديناميكي
</h3>

<p>
	يُقصد به إعادة توجيه حركة البيانات من نطاق محدد من المنافذ إلى خادم بعيد.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_31" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">D </span><span class="lit">3000</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69470" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431d0f95d_VisualguidetoSSHtunnels15.png.0d2c33fa6359d88ab12e0fe4b19a8b94.png" rel=""><img alt="Visual guide to SSH tunnels15.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69470" data-unique="iqfu78s18" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431d0f95d_VisualguidetoSSHtunnels15.png.0d2c33fa6359d88ab12e0fe4b19a8b94.png"></a>
</p>

<p>
	يفتح الاستعلام السابق وكيل بروتوكول SOCKS على منفذ 3000 لجميع واجهات نظامك المحلي، ليسمح لك ذلك بتوجيه البيانات المُرسلة عبر الوكيل proxy إلى خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> في أي منفذ أو إلى خادم مستهدف. ومن الناحية الافتراضية، فإن بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> سيستخدم بروتوكول SOCKS5 الذي يمكنه توجيه كلا من حركة بيانات TCP وUDP.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_35" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">D </span><span class="lit">127.0</span><span class="pun">.</span><span class="lit">0.1</span><span class="pun">:</span><span class="lit">3000</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69471" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431d7083b_VisualguidetoSSHtunnels16.png.722a8011652246e79e543c7ee8e0d67d.png" rel=""><img alt="Visual guide to SSH tunnels16.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69471" data-unique="ku4gw6hcv" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431d7083b_VisualguidetoSSHtunnels16.png.722a8011652246e79e543c7ee8e0d67d.png"></a>
</p>

<p>
	يفتح الاستعلام السابق وكيل SOCKS على عنوان 127.0.0.1:3000 في نظامك المحلي.
</p>

<p>
	عندما يكون لديك وكيل SOCKS قيد العمل، فيمكنك إعداد متصفحك ليستخدمه ذلك الوكيل للوصول إلى الموارد، كما لو كان الاتصالات آتيةً من خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>. فإذا حصل خادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> مثلًا على وصول إلى خوادم أخرى على شبكة خاصة، فيمكنك عبر استخدام وكيل SOCKS الوصول إلى تلك الخوادم محليًا كما لو كنت على الشبكة بدون الحاجة إلى إعداد شبكة افتراضية خاصة.
</p>

<p>
	يمكنك اختبار وكيل SOCKS قيد العمل عبر استخدام الاستعلام التالي:
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_37" style="">
<span class="pln">curl </span><span class="pun">-</span><span class="pln">x socks5</span><span class="pun">:/</span><span class="str">/127.0.0.1:12345 https:/</span><span class="pun">/</span><span class="pln">example</span><span class="pun">.</span><span class="pln">org</span></pre>

<p>
	<strong>إعدادات عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></strong>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69472" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431dc2ff8_VisualguidetoSSHtunnels17.png.5ad9a6be11575ca78867f37a0a99ec8b.png" rel=""><img alt="Visual guide to SSH tunnels17.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69472" data-unique="23uf3895g" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431dc2ff8_VisualguidetoSSHtunnels17.png.5ad9a6be11575ca78867f37a0a99ec8b.png"></a>
</p>

<p>
	إذا أردت أن يكون وكيل SOCKS متاحًا لمزيد من الواجهات وليس فقط الخادم المحلي، فعليك التأكد من تفعيل خيار GatewayPorts على نظامك المحلي:
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_39" style="">
<span class="typ">GatewayPorts</span><span class="pln"> yes</span></pre>

<p>
	بما أن خيار <code>GatewayPorts</code> قد أُعِدّ في عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> سابقًا، فيمكنك أيضًا إعداده باستخدام خيارات سطر الأوامر عوضًا عن ملف <code>ssh_config</code>.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_42" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">o </span><span class="typ">GatewayPorts</span><span class="pun">=</span><span class="pln">yes </span><span class="pun">-</span><span class="pln">D </span><span class="lit">3000</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<h2>
	القفز بين الخوادم وأوامر الوكيل
</h2>

<p>
	نقصد بهذا عملية إجراء اتصال شفاف إلى خادم بعيد عبر خوادم وسيطة.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_44" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">J user1@jump</span><span class="pun">-</span><span class="pln">host user2@remote</span><span class="pun">-</span><span class="pln">host</span></pre>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_46" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">o </span><span class="str">"ProxyJump user1@jump-host"</span><span class="pln"> user2@remote</span><span class="pun">-</span><span class="pln">host</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69473" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431e231b6_VisualguidetoSSHtunnels18.png.2e3548b00816d2b72e57df094f51bb73.png" rel=""><img alt="Visual guide to SSH tunnels18.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69473" data-unique="sz4ofsxj4" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431e231b6_VisualguidetoSSHtunnels18.png.2e3548b00816d2b72e57df094f51bb73.png"></a>
</p>

<p>
	يُنشئ المثال الموضح أعلاه اتصال <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> مع خادم قفز jump host، ويوجه تدفق بيانات TCP إلى خادم بعيد. أي أنه يتصل بالخادم البعيد عبر خادم قفز وسيط. يُفترض أن يعمل الاستعلام أعلاه مباشرةً بدون إعداد مسبق إذا كان خادم القفز لديه وصول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> إلى الخادم البعيد، أما إذا لم يكن الأمر كذلك فيمكنك استخدام طريقة توجيه الوكيل agent forwarding لتمرير هوية <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الخاصة بحاسبك المحلي إلى الخادم البعيد.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_48" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">J jump</span><span class="pun">-</span><span class="pln">host1</span><span class="pun">,</span><span class="pln">jump</span><span class="pun">-</span><span class="pln">host2 <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69474" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431e7944c_VisualguidetoSSHtunnels19.png.5f069198b2e1536131087dc057456d7e.png" rel=""><img alt="Visual guide to SSH tunnels19.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69474" data-unique="c3ikiutsh" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431e7944c_VisualguidetoSSHtunnels19.png.5f069198b2e1536131087dc057456d7e.png"></a>
</p>

<p>
	يمكنك أيضًا استخدام فواصل متعددة (٫) للفصل بين خوادم القفز.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_50" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">o </span><span class="typ">ProxyCommand</span><span class="pun">=</span><span class="str">"nc -X 5 -x localhost:3000 %h %p"</span><span class="pln"> user@remote</span><span class="pun">-</span><span class="pln">host</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69476" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431f33f42_VisualguidetoSSHtunnels20.png.af94fa19f5a163b6ace153e35004b90e.png" rel=""><img alt="Visual guide to SSH tunnels20.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69476" data-unique="17v67eh4k" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431f33f42_VisualguidetoSSHtunnels20.png.af94fa19f5a163b6ace153e35004b90e.png"></a>
</p>

<p>
	يوضح الاستعلام السابق كيفية الاتصال بخادم بعيد عبر وكيل SOCKS5 مستخدمًا أوامر netcat. ومن وجهة نظر الخادم، فإن عنوان IP قد صدر من خادم وكيل proxy-host، ومع ذلك فإن اتصال <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> بحدّ ذاته مشفر بتقنية طرف لطرف end-to-end، لذلك فإن ذلك الخادم الوكيل لا يرى سوى تدفق من البيانات المشفرة بين النظام المحلي والخادم البعيد.
</p>

<p>
	<strong>إعدادات عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></strong>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69477" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431f8bed9_VisualguidetoSSHtunnels21.png.118d7e03f4a7f48d2a31039f7d72e636.png" rel=""><img alt="Visual guide to SSH tunnels21.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69477" data-unique="1sphffe3l" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431f8bed9_VisualguidetoSSHtunnels21.png.118d7e03f4a7f48d2a31039f7d72e636.png"></a>
</p>

<p>
	يمكنك استخدام خيار <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>-add لإضافة هوية <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> المحلية إلى وكيل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> المحلي وتفعيل إمكانية توجيه الوكيل.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_52" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">add</span></pre>

<h2>
	أنفاق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الموثوقة
</h2>

<p>
	نقصد بأنفاق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الموثوقة، كيفية إبقاء نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> مفتوحًا حتى في حالة حدوث أخطاء في الشبكة، حيث تعمل جميع الأوامر سابقة الذكر على نحو مباشر ومُرتجل، لكن إذا أردت الحفاظ على نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> مستقرًا خلال انقطاع الاتصال بالشبكة أو عند استخدام اتصالات رديئة، فستحتاج إلى إجراء إعدادات إضافية.
</p>

<p>
	افتراضيًا، قد تستنفد اتصالات TCP المستخدمة لإنشاء نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> من وقتها بعد فترة من عدم النشاط، ولمنع ذلك يمكنك إعداد الخادم لجعله يُرسل رسائل نبض بانتظام.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69478" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431fe3314_VisualguidetoSSHtunnels22.png.60a9ab735ede75c1511f61ef64e43bdf.png" rel=""><img alt="Visual guide to SSH tunnels22.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69478" data-unique="yxqd9d6od" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc431fe3314_VisualguidetoSSHtunnels22.png.60a9ab735ede75c1511f61ef64e43bdf.png"></a>
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_54" style="">
<span class="typ">ClientAliveInterval</span><span class="pln"> </span><span class="lit">15</span><span class="pln">
</span><span class="typ">ClientAliveCountMax</span><span class="pln"> </span><span class="lit">4</span></pre>

<p>
	يمكنك أيضًا إعداد العميل ليُرسل تلك النبضات.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69479" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc432045418_VisualguidetoSSHtunnels23.png.45a38093942a84babca01a96f98fae96.png" rel=""><img alt="Visual guide to SSH tunnels23.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69479" data-unique="0303kvo4z" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc432045418_VisualguidetoSSHtunnels23.png.45a38093942a84babca01a96f98fae96.png"></a>
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_56" style="">
<span class="typ">ServerAliveInterval</span><span class="pln"> </span><span class="lit">15</span><span class="pln">
</span><span class="typ">ServerAliveCountMax</span><span class="pln"> </span><span class="lit">4</span></pre>

<p>
	<strong>كيفية استخدام برنامج AutoSSH</strong>
</p>

<p>
	بينما قد تنجح الخيارات المذكورة سابقًا في منع انقطع الاتصال بسبب عدم النشاط، فهي لن تُعيد إنشاء الاتصال المُنقطع. ولكي تتأكد من إعادة إنشاء نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، يمكنك استخدام برنامج AutoSSH والذي يُنشئ نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> ويراقب حالته. حيث سيقبل برنامج AutoSSH نفس المتغيّرات التي يستخدمها <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> لإعادة التوجيه.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_58" style="">
<span class="pln">autossh </span><span class="pun">-</span><span class="pln">R </span><span class="lit">2222</span><span class="pun">:</span><span class="pln">localhost</span><span class="pun">:</span><span class="lit">22</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">-</span><span class="pln">server</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69480" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc4320988dc_VisualguidetoSSHtunnels24.png.2a8ef788113ef7b89499a0881d665ad6.png" rel=""><img alt="Visual guide to SSH tunnels24.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69480" data-unique="h2ca3n75l" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc4320988dc_VisualguidetoSSHtunnels24.png.2a8ef788113ef7b89499a0881d665ad6.png"></a>
</p>

<p>
	يُنشئ المثال أعلاه نفقًا عكسيًا يرتد مجددًا عند فشل الاتصال بالشبكة. ومن الناحية الافتراضية، فإن برنامج AutoSSH سيفتح منافذًا إضافية في عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> والخادم، وذلك لإجراء فحوصات الحالة. فإذا حدث وتوقف مرور البيانات بين منافذ فحص الحالة، فسيُعيد برنامج AutoSSH تشغيل نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_61" style="">
<span class="pln">autossh </span><span class="pun">-</span><span class="pln">R </span><span class="lit">2222</span><span class="pun">:</span><span class="pln">localhost</span><span class="pun">:</span><span class="lit">22</span><span class="pln"> \
</span><span class="pun">-</span><span class="pln">M </span><span class="lit">0</span><span class="pln"> \
</span><span class="pun">-</span><span class="pln">o </span><span class="str">"ServerAliveInterval 10"</span><span class="pln"> </span><span class="pun">-</span><span class="pln">o </span><span class="str">"ServerAliveCountMax 3"</span><span class="pln"> \
remote</span><span class="pun">-</span><span class="pln">host</span></pre>

<p>
	يُعطل استخدام راية <code>M 0-</code> تشغيل منافذ فحص الحالة، ويُسمح لعميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> بتولي أمر تلك الفحوصات. في هذا المثال التالي، فإن عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> يتوقع من الخادم إرسال نبضة كل 10 ثوان، وإذا فشل الخادم في إرسال 3 نبضات متتالية، فسيُغلق عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> النفق وسيُعيد برنامج AutoSSH إنشاء اتصال جديد.
</p>

<h2>
	المزيد من الأمثلة وحالات الاستخدام
</h2>

<p>
	<strong>وصول شفاف إلى موارد بعيدة في شبكة خاصة</strong>
</p>

<p>
	لنفترض أن هناك مستودع git موجود في شبكة خاصة يمكن الوصول إليها فقط عبر خادم خاص على الشبكة ولا يمكن الوصول إلى هذا الخادم من خلال شبكة الإنترنت العامة. ومع أنك تمتلك وصولًا مباشرًا إلى الخادم، إلا أنك لا تمتلك وصول <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> إلى الشبكة الخاصة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69481" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc4320ea25a_VisualguidetoSSHtunnels25.png.0a034cef9f317e8f6f4b8a871e0dd53b.png" rel=""><img alt="Visual guide to SSH tunnels25.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69481" data-unique="khxxgarsz" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc4320ea25a_VisualguidetoSSHtunnels25.png.0a034cef9f317e8f6f4b8a871e0dd53b.png"></a>
</p>

<p>
	لنفترض أنك ترغب في الوصول إلى مستودع git الخاص كما لو كنت متصلًا به مباشرةً من نظامك المحلي، فإذا كان لديك وصول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> إلى خادم آخر يمكن الوصول إليه من كلا نظامك المحلي وخادمك الخاص، فيمكنك الوصول إلى مستودع git الخاص عبر إنشاء نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> واستخدام بعض إعدادات أوامر بروكسي.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_63" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">L </span><span class="lit">127.0</span><span class="pun">.</span><span class="lit">0.1</span><span class="pun">:</span><span class="lit">22</span><span class="pun">:</span><span class="lit">127.0</span><span class="pun">.</span><span class="lit">0.1</span><span class="pun">:</span><span class="lit">2222</span><span class="pln"> intermediate</span><span class="pun">-</span><span class="pln">host</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69482" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc43214bc3c_VisualguidetoSSHtunnels26.png.24fbafb9bd7a249f1774343d9a1579c3.png" rel=""><img alt="Visual guide to SSH tunnels26.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69482" data-unique="vk16s1847" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc43214bc3c_VisualguidetoSSHtunnels26.png.24fbafb9bd7a249f1774343d9a1579c3.png"></a>
</p>

<p>
	سيعيد ذلك الاستعلام توجيه المنفذ 2222 في الخادم الوسيط إلى منفذ 22 في الخادم الخاص. والآن عند إنشاء اتصال <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> إلى منفذ 2222 من خادم وسيط، فستتصل بخادم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الموجود في الخادم الخاص رغم عدم القدرة على الوصول إلى الخادم الخاص عبر شبكة الإنترنت العامة.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_65" style="">
<span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> </span><span class="pun">-</span><span class="pln">p </span><span class="lit">2222</span><span class="pln"> user@localhost</span></pre>

<p>
	إذا رغبت في إنشاء باب خلفي بطريقة أسهل، فيمكنك إضافة بعض الاستعلامات إلى ملف <code>‎~/.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/config</code> المحلي.
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_3663_67" style="">
<span class="typ">Host</span><span class="pln"> git</span><span class="pun">.</span><span class="pln">private</span><span class="pun">.</span><span class="pln">network
</span><span class="typ">HostName</span><span class="pln"> git</span><span class="pun">.</span><span class="pln">private</span><span class="pun">.</span><span class="pln">network
</span><span class="typ">ForwardAgent</span><span class="pln"> yes
</span><span class="typ">ProxyCommand</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> private nc </span><span class="pun">%</span><span class="pln">h </span><span class="pun">%</span><span class="pln">p

</span><span class="typ">Host</span><span class="pln"> private
</span><span class="typ">HostName</span><span class="pln"> localhost
</span><span class="typ">Port</span><span class="pln"> </span><span class="lit">2222</span><span class="pln">
</span><span class="typ">User</span><span class="pln"> private</span><span class="pun">-</span><span class="pln">user
</span><span class="typ">ForwardAgent</span><span class="pln"> yes
</span><span class="typ">ProxyCommand</span><span class="pln"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> tunnel@intermediate</span><span class="pun">-</span><span class="pln">host nc </span><span class="pun">%</span><span class="pln">h </span><span class="pun">%</span><span class="pln">p</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="69483" href="https://academy.hsoub.com/uploads/monthly_2021_06/60cc4321a7f22_VisualguidetoSSHtunnels27.png.943971fa82858663ccd1e4036cb706c5.png" rel=""><img alt="Visual guide to SSH tunnels27.png" class="ipsImage ipsImage_thumbnailed" data-fileid="69483" data-unique="mwtf828zm" src="https://academy.hsoub.com/uploads/monthly_2021_06/60cc4321a7f22_VisualguidetoSSHtunnels27.png.943971fa82858663ccd1e4036cb706c5.png"></a>
</p>

<p>
	وبهذا يكون قد بات لديك وصول إلى مستودع git الخاص كما لو كنت موجودًا على نفس الشبكة الخاصة.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://robotmoon.com/ssh-tunnels/" rel="external nofollow">A visual guide to <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> tunnels</a>، لكاتبه <a href="https://github.com/linrock/" rel="external nofollow">Linmiao Xu.</a>
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/workflow/git/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%B3%D9%8A%D8%B1-%D8%B9%D9%85%D9%84-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D9%81%D9%8A-%D8%A7%D9%84%D9%86%D8%B3%D8%AE-git-r267/" rel="">أساسيات سير عمل نظام التحكم في النسخ git</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/workflow/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A5%D9%84%D9%89-%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D8%AC-vagrant-r269/" rel="">دليلك إلى استعمال برنامج Vagrant</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/workflow/git/%D9%81%D9%8A%D8%AF%D9%8A%D9%88-%D8%A7%D9%84%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D8%AE%D8%AF%D9%85%D8%A9-github-%D8%AF%D9%88%D9%86-%D9%83%D9%84%D9%85%D8%A9-%D8%B3%D8%B1-r661/" rel="">[فيديو] الاتصال بخدمة GitHub دون كلمة سر</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">508</guid><pubDate>Sun, 20 Jun 2021 13:00:00 +0000</pubDate></item><item><title>[&#x641;&#x64A;&#x62F;&#x64A;&#x648;] &#x627;&#x644;&#x627;&#x62A;&#x635;&#x627;&#x644; &#x628;&#x62E;&#x627;&#x62F;&#x645; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x639;&#x628;&#x631; SSH</title><link>https://academy.hsoub.com/devops/security/ssh/%D9%81%D9%8A%D8%AF%D9%8A%D9%88-%D8%A7%D9%84%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D8%AE%D8%A7%D8%AF%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%B9%D8%A8%D8%B1-ssh-r397/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2019_03/ssh.png.b5950f623e2292a61a5054c5b6c19a53.png" /></p>

<p>
	<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="400" width="700" src="https://www.youtube.com/embed/NqKdCONHNgE"></iframe>
</p>

<p>
	نشرح طريقة الاتصال الآمنة عبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> بخوادم لينكس باستعمال برمجية PuTTY. وهذا يتضمن إعداد الوصول إلى الخادم عبر كلمة المرور، أو عبر مفتاح عام.
</p>
]]></description><guid isPermaLink="false">397</guid><pubDate>Tue, 12 Mar 2019 10:35:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x651;&#x629; &#x645;&#x646;&#x639; SSH &#x645;&#x646; &#x641;&#x635;&#x644; &#x627;&#x644;&#x62C;&#x644;&#x633;&#x627;&#x62A;</title><link>https://academy.hsoub.com/devops/security/ssh/%D9%83%D9%8A%D9%81%D9%8A%D9%91%D8%A9-%D9%85%D9%86%D8%B9-ssh-%D9%85%D9%86-%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%AC%D9%84%D8%B3%D8%A7%D8%AA-r391/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2019_01/prevent-ssh-disconnecting-sessions.png.a4637b59952c0fe6ae481d988730fc48.png" /></p>

<h2>
	مقدمة
</h2>

<p>
	إذا كنت تعمل(على الشبكة) مُستخدمًا بروتوكول النقل الآمن Secure Shell) <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>)، فإنّك تعلم مُسبقًا أنّ الجلسة session ستُغلق تلقائيًا بعد دقائقٍ قليلةٍ من عدم النشاط "الخمول"، وذلك لأسبابٍ أمنية.من الممكن في الحقيقة أن تكون قد نسيت إغلاقها، وبالتالي فقد يتمكن شخص آخر من السيطرة على نظامك. ولكن إذا كنت لا ترى في ذلك مشكلة، فبإمكانك تغيير هذا السلوك في ضبط GNU/Linux. <strong>يجب تنفيذ الأوامر التالية من عميل</strong> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>.
</p>

<h2>
	كيفيّة منع <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> من قطع الاتصال
</h2>

<p>
	يجب تنفيذ الخطوات التالية في عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، وليس في الخادم البعيد.
</p>

<p>
	افتح محرّر النص خاصتك في البداية وعدّل ملف الـ config الحالي للمستخدم الخاص بك، والذي تجده في المسار التالي:
</p>

<pre class="ipsCode" id="ips_uid_6863_6">
	~/.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/config
</pre>

<p>
	أضف الأسطر التالية:
</p>

<p>
	تأكّد من أن السطر الثاني سيبدأ بمسافة فارغة.
</p>

<p>
	يُخبر السطر الأول الـ <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> بتطبيق هذا الضبط على جميع المضيفات البعيدة remote hosts. كما يمكنك بالطبع تحديد واحد منها فقط، وذلك باستبدال رمز الـ "*" بالمضيف المطلوب.
</p>

<p>
	ستحتاج بعد الانتهاء من ذلك إلى تطبيق الإعدادات المذكورة أعلاه:
</p>

<pre class="ipsCode" id="ips_uid_6863_6">
sudo source ~/.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/config
</pre>

<p>
	أضف أو عدّل السطر التالي في ملف etc / <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> / ssh_config/ لتطبيق هذه الإعدادات على المستوى العام globally:
</p>

<pre class="ipsCode" id="ips_uid_6863_6">
ServerAliveInterval 60
</pre>

<p>
	احفظ الملف واغلقه.
</p>

<p>
	وبهذه الطريقة، لن تُغلق جلسة <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> بعد الآن بسبب الخمول.
</p>

<h2>
	الخلاصة
</h2>

<p>
	تذكّر أن أمان نظامك، وخصوصًا في حالة الخادم server، ليس أمرًا ثانويًا، وذلك كلّه بيديك. إنّ تغيير سلوك برامج مثل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> يجب أن يتم فقط في حال كنت تعرف بالضبط ما تريده، وبعد التأكّد من أنّ ذلك لن يضعك في مشكلةٍ ما.
</p>

<p>
	ترجمة وبتصرّف للمقال <a href="https://www.unixmen.com/prevent-ssh-disconnecting-sessions/" rel="external nofollow">How to prevent <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> from disconnecting sessions</a> لصاحبه Giuseppe Molica
</p>
]]></description><guid isPermaLink="false">391</guid><pubDate>Thu, 03 Jan 2019 11:00:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641; &#x62A;&#x633;&#x62A;&#x62E;&#x62F;&#x645; SSHFS &#x644;&#x631;&#x628;&#x637; &#x646;&#x638;&#x627;&#x645; &#x645;&#x644;&#x641;&#x627;&#x62A; &#x628;&#x639;&#x64A;&#x62F; &#x639;&#x628;&#x631; SSH</title><link>https://academy.hsoub.com/devops/security/ssh/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-sshfs-%D9%84%D8%B1%D8%A8%D8%B7-%D9%86%D8%B8%D8%A7%D9%85-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A8%D8%B9%D9%8A%D8%AF-%D8%B9%D8%A8%D8%B1-ssh-r291/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2017_01/sshfs.png.5a5acd86bb1c0da766403141f73f4b4c.png" /></p>

<h1 id="كيف-تستخدم-sshfs-لربط-نظام-ملفات-بعيد-عبر-ssh">
	مقدمة
</h1>

<p>
	في كثيرٍ من الأحيان يصبح نقل الملفات من وإلى الخادوم عملية متعبة، يعرف ذلك جيدًا كل من يمتلك أو يدير خادومًا يضم موقعه الشخصي أو ماشابه، إنه يعرف تلك العملية المستمرة المتكررة والتي تبدأ بتنزيل الملفات من الخادوم البعيد لإدخال بعض التعديلات عليها (والتي غالبًا ما تكون صغيرة) ومن ثم إعادة رفعها واختبارها، وإذا كان التعديل خاطئا فستجد نفسك محبطًا لاضطرارك تنزيل نسخة جديدة من الملف لتعديلها وإعادة رفعها.<br>
	لحسن الحظ هناك طريقة بسيطة تتيح لنا ربط الخادوم البعيد مع جهازنا الشخصي، بحيث نتمكّن من إدارته كما لو كان قرصًا محليًا لدينا بما في ذلك إنشاء وتعديل الملفات عليه بينما تتم عملية رفع الملفات الجديدة أو المعدلة تلقائيًا إلى الخادوم.<br>
	سيتناول هذا المقال كيفية تركيب واستخدام الأداة SSHFS للقيام بذلك.
</p>

<p style="text-align: center;">
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="20684" data-unique="nylqdgunw" src="https://academy.hsoub.com/uploads/monthly_2017_01/sshfs.png.4f7bfa4bed59ab72ec604ae991c6d5ef.png" style="" alt="sshfs.png"></p>

<h2 id="تركيب-sshfs">
	تركيب SSHFS
</h2>

<h3 id="على-دبيان-والتوزيعات-المبنية-عليها">
	على دبيان والتوزيعات المبنية عليها
</h3>

<p>
	بنيت SSHFS لتعمل على لينكس أساسًا، لذا يمكن تركيبها بسهولة على جهازك عن طريق استدعائها من المستودع الرسمي لتوزيعتك، لمستخدمي دبيان لينكس (أو الأنظمة المبنية عليها مثل Ubuntu أو Mint) يتم ذلك من خلال الأمر apt-get.
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_6681_7">
<span class="pln">sudo apt</span><span class="pun">-</span><span class="pln">get install sshfs
</span></pre>

<h3 id="على-فيدورا-centos">
	على فيدورا، CentOS
</h3>

<p>
	يمكن استخدام مدير الحزم yam كما يلي (وفق صلاحيات الجذر root).
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_6681_9">
<span class="pln">yum install fuse</span><span class="pun">-</span><span class="pln">sshfs
</span></pre>

<h3 id="على-archlinux">
	على Archlinux
</h3>

<p>
	من خلال مدير الحزم pacman.
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_6681_11">
<span class="pln">sudo pacman </span><span class="pun">-</span><span class="pln">S sshfs
</span></pre>

<h3 id="على-نظام-osx">
	على نظام OSX
</h3>

<p>
	مستخدمو أجهزة Mac عليهم تركيب كلًا من حزمتي FUSE و SSHFS من موقع osxfuse.
</p>

<h3 id="على-نظام-windows">
	على نظام Windows
</h3>

<p>
	لاستخدام SSHFS على الأجهزة العاملة بنظام Windows نحتاج للحصول على برنامج win-sshfs من مستودعه الخاص على google code من الرابط أدناه.<br>
	بعد تنزيل الحزمة السابقة يمكن تركيبها بسهولة بالنقر المزودج عليها، قد يخبرك معالج التركيب بالحاجة إلى تنزيل ملفات إضافية من الشبكة (مثل إطار .NET Framework 4.0) وتركيبها على الجهاز.
</p>

<p>
	<code><a href="https://win-sshfs.googlecode.com/files/win-sshfs-0.0.1.5-setup.exe" ipsnoembed="false" rel="external nofollow">https://win-sshfs.googlecode.com/files/win-sshfs-0.0.1.5-setup.exe</a></code>
</p>

<h2 id="استخدام-sshfs-لربط-نظام-ملفات-بعيد">
	استخدام SSHFS لربط نظام ملفات بعيد
</h2>

<p>
	التعليمات التالية مخصصة لأنظمة لينكس و Mac OSX، مستخدمي ويندوز عليهم الانتقال إلى الفقرة التالية.
</p>

<p>
	في البداية يتوجب علينا إنشاء مجلد جديد لاستخدامه كنقطة ربط لنظام الملفات المستهدف.
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_6681_13">
<span class="pln">sudo mkdir </span><span class="pun">/</span><span class="pln">mnt</span><span class="pun">/</span><span class="pln">test
</span></pre>

<p>
	يمكنك استبدال test بأي اسم ترغب به.<br>
	كل شيء بات جاهزًا حيث يمكنك الآن ربط نظام الملفات محليًا باستخدام الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_6681_15">
<span class="pln">sudo sshfs root@192</span><span class="pun">.</span><span class="lit">168.1</span><span class="pun">.</span><span class="lit">200</span><span class="pun">:/</span><span class="pln"> </span><span class="pun">/</span><span class="pln">mnt</span><span class="pun">/</span><span class="pln">test
</span></pre>

<p>
	<strong>ملاحظات:</strong>
</p>

<ul>
<li>
		192.168.1.200، هو عنوان IP الذي استخدمته للدخول إلى خادوم دبيان الخاص بي.
	</li>
	<li>
		مجلد test سيعرض نظام الملفات البعيد.
	</li>
	<li>
		ستسألك sshfs عن كلمة المرور في حال كنت تستخدم واحدة، أدخلها للمتابعة.
	</li>
	<li>
		أما في حال استخدامك مفتاح توثيق key authorization لتسجيل الدخول، فعليك اخبار sshfs بمفتاحك العام من خلال الأمر التالي والذي سيطلب منك إدخال عبارة المرور التي استخدمتها أثناء إنشاءك المفتاح مع <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>-keygen
	</li>
</ul>
<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_6681_17">
<span class="pln">sudo sshfs </span><span class="pun">-</span><span class="pln">o </span><span class="typ">IdentityFile</span><span class="pun">=~/.</span><span class="pln"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></span><span class="pun">/</span><span class="pln">id_rsa root@192</span><span class="pun">.</span><span class="lit">168.1</span><span class="pun">.</span><span class="lit">200</span><span class="pun">:/</span><span class="pln"> </span><span class="pun">/</span><span class="pln">mnt</span><span class="pun">/</span><span class="pln">test
</span></pre>

<p>
	يمكنك الآن العمل على نظام الملفات البعيد كما لو كان قرصًا إضافيًا موصولًا إلى جهازك. على سبيل المثال كل ملف تعمل على إنشائه في مجلد test المحلي سيتم رفعه إلى الخادوم البعيد الخاص بك مباشرة (سواء أكنت تستخدم خادومًا افتراضيًا أو حقيقيًا)، يشمل ذلك النسخ، التعديل، الحذف، وغيره..<br>
	نقطة مهمة يجب الانتباه إليها، وهي أن عملية الربط السابقة مع الخادوم مؤقتة فإذا ما تم إيقاف أو إعادة تشغيل جهازك أو جهاز الخادوم فيجب تكرار الخطوات السابقة مجددًا.<br>
	عندما تنتهي من العمل يمكنك إلغاء ربط نقطة الوصول بسهولة باستخدام
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_6681_19">
<span class="pln">sudo umount </span><span class="pun">/</span><span class="pln">mnt</span><span class="pun">/</span><span class="pln">test
</span></pre>

<h2 id="ربط-نظام-الملفات-بشكل-دائم">
	ربط نظام الملفات بشكل دائم
</h2>

<p>
	إذا كنت ترغب في تثبيت نقطة الربط السابقة كي لا يتم إلغاؤها مع إيقاف أو إعادة تشغيل أيٍّ من جهازك أو الخادوم البعيد، فنحن بحاجة إلى إدخال بعض التعديلات على ملف <code>/etc/fstab</code> في جهازك المحلي لتفعيل نقطة الربط تلقائيًا مع كل إقلاع.<br>
	في البداية علينا تحرير ملف <code>/etc/fstab</code> بصلاحيات الجذر باستخدام محرر nano في الطرفية
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_6681_21">
<span class="pln">sudo nano </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">fstab</span></pre>

<p>
	بعد ذلك أضف السطر التالي أسفل ملف fstab
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_6681_23">
<span class="pln">sshfs</span><span class="com">#root@192.168.1.200:/ /mnt/test</span><span class="pln">
</span></pre>

<p>
	احفظ التعديلات بالضغط على Ctrl مع X ثم اكتب yes واضغط Enter.<br>
	بينما تغني الخطوة الأخيرة عن تكرار عملية الربط بشكل يدوي وإدخال عبارة المرور ومفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> في كل مرة، إلا أنها تنطوي على مخاطر أمنية، ففي حال تعرض جهازك المحلي لاختراق أو سرقة على سبيل المثال فسيغدوا خادومك البعيد عرضةً لذلك أيضًا، لذا لا ينصح عادةً بالتعديل على ملف fstab لإنشاء ربط تلقائي.
</p>

<h2 id="استخدام-win-sshfs-لربط-نظام-الملفات-على-أجهزة-windows">
	استخدام Win-SSHFS لربط نظام الملفات على أجهزة Windows
</h2>

<p>
	لربط نظام ملفات بعيد على Windows سنستعين ببرنامج win-sshfs والذي يملك واجهة رسومية بسيطة تقودنا خطوة بخطوة لإنجاز المطلوب، وذلك على النحو المبين آتيًا:
</p>

<ul>
<li>
		بعد تشغيل البرنامج اضغط على زر Add أسفل يسار النافذة.
	</li>
	<li>
		أدخل اسما للخادوم الذي ستستضيف ملفاته من خانة Drive Name field.
	</li>
	<li>
		أدخل عنوان الـ IP الخاص بالخادوم.
	</li>
	<li>
		أبق الرقم 22 في خانة المنفذ <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> port (إلا إذا قمت بتغيير منفذ <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> يدويًا).
	</li>
	<li>
		أدخل اسم المستخدم في حقل Username.
	</li>
	<li>
		أدخل كلمة مرور <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> خاصتك في خانة password (في Windows لا يمكننا إعداد الحساب بتوثيق مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>).
	</li>
	<li>
		أدخل المسار الذي ترغب بربطه من الخادوم البعيد في حقل Directory، استخدم / لربط نظام الملفات ابتداء من مسار الجذر، أو /var/www لربط مجلد المنزل.
	</li>
	<li>
		اختر حرفًا من حقل Dirve Leter كي يستخدمه Windows كاسم لقرص نظام الملفات البعيد عند ربطه في جهاز الكمبيوتر.
	</li>
	<li>
		أخيرًا إضغط على زر Mount لإنشاء الإتصال وتفعيل نقطة الربط.
	</li>
</ul>
<p>
	يمكنك التوجه إلى جهاز الكمبيوتر حيث ستشاهد قرصًا جديدًا يحمل الحرف الذي كنت قد اخترته منذ قليل ويحوي نظام ملفاتك البعيد.
</p>

<h2 id="استخدامات-نقطة-الربط">
	استخدامات نقطة الربط
</h2>

<p>
	كما سبق وأشرنا يمكن التعامل مع نقطة الربط المنشأة كما لو كانت قرصًا إضافيًا على جهازك المحلي، يشمل ذلك عمليات النسخ، اللصق، النقل، التحرير، الإنشاء، الضغط، وأية عملية يمكن إجراءها على نظام الملفات باستثناء القدرة على تشغيل البرامج أو السكربتات scripts.<br>
	علاوة على تسهيل الوصول إلى ملفات الخادوم البعيد الخاص بك، يتيح إنشاء نقطة الربط استخدام البرامج التي تفضلها، إذ يمكنك تحرير ملفّات موقعك الشخصي على سبيل المثال بالمحرر الذي تحبّ، كما يمكنك تعديل البرمجيات باستخدام بيئة IDE التي تفضل، وحالما تنتهي من إجراء التعديلات وحفظها على حاسبك، ستكون في طريقها إلى الخادوم البعيد كذلك.<br>
	إضافةً إلى ذلك فإن استخدام نقطة الربط يتيح لك اختبار التعديلات التي تعمل عليها بشكل فوري ودون الحاجة إلى تنزيل الملف من الخادوم، التعديل عليه، ومن ثم إعادة رفعه لمشاهدة النتائج، لا سيما عند إجراء اختبارات متكررة والتي تجعل من العملية السابقة مملة بشكل كبير.
</p>

<p>
	ترجمة -وبتصرّف- للمقال <a href="https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh" rel="external nofollow">How To Use SSHFS to Mount Remote File Systems Over <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></a>
</p>
]]></description><guid isPermaLink="false">291</guid><pubDate>Tue, 10 Jan 2017 10:23:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x625;&#x62F;&#x627;&#x631;&#x629; &#x639;&#x646; &#x628;&#x639;&#x62F; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; OpenSSH &#x639;&#x644;&#x649; &#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/security/ssh/%D8%A7%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%B9%D9%86-%D8%A8%D8%B9%D8%AF-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-openssh-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r172/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-remote-admin-opensshpng.png.0c1dd050c4674a34b032739b4d6f75e4.png" /></p>

<p dir="rtl">سنقدم في هذا الدرس من <a href="https://academy.hsoub.com/search/?tags=ubuntu+server+guide">دليل إدارة خواديم أوبنتو</a> مجموعة أدوات فعّالة للتحكم البعيد ونقل الملفات بين الحواسيب المتصلة بالشبكة تسمى «OpenSSH»، سنتعلم أيضًا مجموعةً من إعدادات الضبط الممكنة مع خادوم OpenSSH ونتعلم كيف نغيرها في نظام أوبنتو الخاص بك.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-remote-admin-opensshpng.png.ea8870ace8628f26879b02f6d7f6a2fd.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="10175" src="https://academy.hsoub.com/uploads/monthly_2015_12/ubuntu-server-remote-admin-opensshpng.thumb.png.bbf6628ef50532c64fa11648e566989f.png" class="ipsImage ipsImage_thumbnailed" alt="ubuntu-server-remote-admin-opensshpng.th"></a></p><p dir="rtl">إن OpenSSH هو إصدار مجاني وحر من مجموعة أدوات بروتوكول «الصدفة الآمنة» (Secure Shell ‏[<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>]) للتحكم البعيد أو نقل الملفات بين الحواسيب؛ الأدوات التقليدية التي كانت مستخدمةً لإنجاز هذه المهام -مثل telnet أو rcp- لم تكن آمنةً حيث كانت تنقل كلمة مرور المستخدم بنصٍ واضح عند استخدامها؛ أما OpenSSH، فيُوفِّر عفريتًا وأدوات للعميل لإنشاء عمليات تحكم عن بعد أو نقل الملفات آمنة ومشفرة؛ ويستبدل الأدوات القديمة استبدالًا فعالًا.</p><p dir="rtl">مكونة خادوم OpenSSH المسماة sshd «تستمع» (listens) باستمرار لاتصالات العميل، وعندما يحدث طلب اتصال، فإن sshd ينُشِئ نوع الاتصال الصحيح اعتمادًا على نوع أداة العميل التي تجري الاتصال؛ على سبيل المثال، لو أن الحاسوب البعيد يتصل باستخدام برمجية عميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>، فإن خادوم OpenSSH يهيّء جلسة تحكم عن بُعد بَعد الاستيثاق؛ وإذا اتصل المستخدم البعيد مع خادوم OpenSSH باستخدام scp، فسيُهيّء عفريت خادوم OpenSSH نقلًا آمنًا للملفات بين الخادوم والعميل بعد الاستيثاق؛ ويمكن أن يَستخدِم OpenSSH عدَّة طرق للاستيثاق، منها كلمة المرور العادية، والمفتاح العمومي (public key)، وبطاقات Kerberos للدخول.</p><h2 dir="rtl">التثبيت</h2><p dir="rtl">إن عملية تثبيت خادوم وعميل OpenSSH هي عمليةٌ بسيطة؛ استخدم هذا الأمر من مِحَث الطرفية لتثبيت عميل OpenSSH على نظام أوبنتو:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install openssh-client</pre><p dir="rtl">استخدم هذا الأمر في سطر الأوامر لتثبيت خادوم OpenSSH، وملفات الدعم المتعلقة به:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install openssh-server</pre><p dir="rtl">يمكن أيضًا تحديد حزمة <span style="font-family:courier new,courier,monospace;">openssh-server</span> للتثبيت أثناء عملية تثبيت نسخة الخادوم من أوبنتو.</p><h2 dir="rtl">الضبط</h2><p dir="rtl">يمكنك ضبط السلوك الافتراضي لتطبيق خادوم OpenSSH‏ (sshd) بتعديل الملف <span style="font-family:courier new,courier,monospace;">‎/etc/<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/sshd_config</span>، للمزيد من المعلومات حول الضبط المستخدم في هذا الملف، تستطيع مراجعة صفحة الدليل الملائمة بإدخال الأمر الآتي في الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">man sshd_config</pre><p dir="rtl">هنالك تعليمات كثيرة في ملف ضبط <span style="font-family:courier new,courier,monospace;">sshd</span> تتحكم بأشياء مثل إعدادات الاتصالات وأنماط الاستيثاق؛ يمكن أن تُعدَّل ما سنشرحه من تعليمات الضبط بتعديل ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/sshd_config</span>.</p><p dir="rtl"><strong>تنويه:</strong> قبل تعديل ملف الضبط، عليك أخذ نسخة من الملف الأصلي وحفظها من الكتابة عليها لكي تحصل على نسخة من الضبط الافتراضي كمرجع، ولإعادة استخدامها وقت الحاجة.</p><p dir="rtl">انسخ ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/sshd_config</span> واحمهِ من الكتابة باستخدام الأوامر الآتية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original</pre><p dir="rtl">ما يلي هو أمثلة عن تعليمات الضبط التي قد ترغب في تعديلها:</p><ul><li><p dir="rtl">لضبط OpenSSH لكي يستمع على منفذ TCP ذي الرقم 2222 بدلًا من منفذ TCP الافتراضي 22، فغيِّر تعليمة المنفذ كما يلي:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Port 2222</pre><ul><li><p dir="rtl">لكي تجعل <span style="font-family:courier new,courier,monospace;">sshd</span> يسمح باستخدام الاستيثاق المبني على المفتاح العمومي، فأضف أو عدِّل السطر:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">PubkeyAuthentication yes</pre><p dir="rtl">إذا كان السطر موجودًا مسبقًا، فتأكد من عدم وجود رمز التعليق قبله.</p><ul><li><p dir="rtl">لجعل خادوم OpenSSH يعرض محتويات ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/issue.net</span> كلافتة قبل تسجيل الدخول، فأضف أو عدِّل السطر الآتي:</p></li></ul><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Banner /etc/issue.net</pre><p dir="rtl">في ملف ‎.<span style="font-family:courier new,courier,monospace;">/‎etc/<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/sshd_config</span></p><p dir="rtl">بعد إجراء التعديلات على ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/sshd_config</span>، فاحفظ الملف ثم أعد تشغيل خادوم sshd لتأخذ التغيرات مفعولها، وذلك بإدخال الأمر الآتي في مِحَث الطرفية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service ssh restart</pre><p dir="rtl"><strong>تحذير:</strong> تتوفر المزيد من تعليمات الضبط لخادوم sshd لتعديل سلوك الخادوم لكي يلائم احتياجاتك، لكن يجب التنويه أنه إذا كانت الطريقة الوحيدة للوصول إلى الخادوم هي <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>، وارتكبت خطأً في ضبط sshd عبر ملف ‎<span style="font-family:courier new,courier,monospace;">/etc/<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/sshd_config</span>، فستجد نفسك غير قادرٍ على الوصول إلى الخادوم بعد إعادة تشغيل خدمة sshd؛ بالإضافة إلى أنك إذا وضعت تعليمة ضبط خاطئة، فسيرفض خادوم sshd أن يعمل؛ لذلك كن حذرًا جدًا عند تعديل هذا الملف على خادوم بعيد.</p><h2 dir="rtl">مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></h2><p dir="rtl">تسمح مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> بالاستيثاق بين جهازين دون الحاجة إلى كلمة مرور، يَستخدم الاستيثاق بواسطة مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> مفتاحين: مفتاح خاص (private) ومفتاح عام (public).</p><p dir="rtl">أدخِل الأمر الآتي في الطرفية لتوليد المفاتيح:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh-keygen -t dsa</pre><p dir="rtl">سيولد الأمر السابق المفاتيح باستخدام خوارزمية التوقيع الرقمية (Digital Signature Algorithm‏ [DSA])، ستُطلَب منك كلمة المرور أثناء العملية، بعد ذلك اضغط ببساطة على Enter لإنشاء المفتاح.</p><p dir="rtl">افتراضيًا، يُحفَظ المفتاح العام في الملف ‎<span style="font-family:courier new,courier,monospace;">~/.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/id_dsa.pub</span>، بينما يكون ملف<span style="font-family:courier new,courier,monospace;"> ‎~/.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/id_dsa</span> هو المفتاح الخاص، انسخ ملف<span style="font-family:courier new,courier,monospace;"> id_dsa.pub</span> إلى المضيف البعيد، ثم أضفه إلى نهاية ملف <span style="font-family:courier new,courier,monospace;">‎~/.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/authorized_keys</span> باستخدام الأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh-copy-id username@remotehost</pre><p dir="rtl">في النهاية، تأكد من الأذونات على ملف <span style="font-family:courier new,courier,monospace;">authorized_keys</span>، حيث يجب أن يملك المستخدم الموثوق فقط إذن القراءة والكتابة؛ إذا لم تكون الأذونات صحيحة، فعدلها بالأمر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">chmod 600 .ssh/authorized_keys</pre><p dir="rtl">يجب أن تصبح الآن قادرًا على الدخول إلى <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> على المضيف البعيد دون طلب كلمة المرور.</p><h2 dir="rtl">مصادر</h2><ul dir="rtl"><li>صفحة ويكي أوبنتو «<a rel="external nofollow" href="https://help.ubuntu.com/community/SSH"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></a>».</li><li>موقع «<a rel="external nofollow" href="http://www.openssh.org/">OpenSSH</a>».</li><li>صفحة الويكي «<a rel="external nofollow" href="https://wiki.ubuntu.com/AdvancedOpenSSH">Advanced OpenSSH</a>».</li></ul><p dir="rtl">ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://help.ubuntu.com/lts/serverguide/openssh-server.html">Ubuntu Server Guide: OpenSSH Server</a>.</p>
]]></description><guid isPermaLink="false">172</guid><pubDate>Sat, 26 Dec 2015 23:10:40 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x625;&#x639;&#x62F;&#x627;&#x62F; &#x627;&#x644;&#x627;&#x633;&#x62A;&#x64A;&#x62B;&#x627;&#x642; &#x645;&#x62A;&#x639;&#x62F;&#x62F; &#x627;&#x644;&#x639;&#x648;&#x627;&#x645;&#x644; &#x645;&#x646; &#x623;&#x62C;&#x644; SSH &#x639;&#x644;&#x649; Ubuntu</title><link>https://academy.hsoub.com/devops/security/ssh/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D9%8A%D8%AB%D8%A7%D9%82-%D9%85%D8%AA%D8%B9%D8%AF%D8%AF-%D8%A7%D9%84%D8%B9%D9%88%D8%A7%D9%85%D9%84-%D9%85%D9%86-%D8%A3%D8%AC%D9%84-ssh-%D8%B9%D9%84%D9%89-ubuntu-r157/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_12/mfa-ssh-ubuntu.png.678407e588ee8451d887a764ffe865d0.png" /></p>

<p dir="rtl">إنّ عامل الاستيثاق authentication factor هو جزء من المعلومات يُستخدَم لإثبات أنّه لدينا الحق لتنفيذ إجراء ما، مثل تسجيل الدخول إلى النّظام، وقناة الاستيثاق authentication channel هي الطّريقة التي يُوصِل بها نظام الاستيثاق عاملًا factor للمستخدم أو الطّريقة التي يطلب بها من المستخدم الرّد، من الأمثلة على عوامل الاستيثاق نجد كلمات السّر ورموز الأمان security tokens، ومن الأمثلة على قنوات الاستيثاق نجد الحواسيب والهواتف المحمولة.</p><p dir="rtl" style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2015_12/mfa-ssh-ubuntu.png.db4e93429ac33d5a2c20e1c4a2220d5f.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="9525" src="https://academy.hsoub.com/uploads/monthly_2015_12/mfa-ssh-ubuntu.thumb.png.60dbe0022aa0f9eb4516cda53711c267.png" class="ipsImage ipsImage_thumbnailed" alt="mfa-ssh-ubuntu.thumb.png.60dbe0022aa0f9e"></a></p><p dir="rtl">تستخدم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> افتراضيًّا كلمات السّر من أجل الاستيثاق، وتُوصي تعليمات <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> باستخدام مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> key بدلًا من ذلك، على أيّة حال يبقى هذا عاملًا واحدًا فقط، فإن تمّ تهديد الحاسوب لدينا من قبل شخص ما، فبإمكانه استخدام مفتاحنا لتهديد خواديمنا أيضًا.</p><p dir="rtl">لمكافحة هذا سنقوم في هذا الدّرس بإعداد استيثاق مُتعدِّد العوامل <strong>(Multi-factor authentication (MFA</strong>، والذي يتطلّب أكثر من عامل من أجل الاستيثاق أو تسجيل الدّخول، وهذا يعني أنّه يجب على المُخترِق أن يُهدِّد عدّة أشياء، مثل حاسوبنا وهاتفنا المحمول معًا لكي يستطيع الدخول، يتم عادةً تلخيص أنواع العوامل المختلفة كما يلي:</p><ol dir="rtl"><li>شيء <strong>نعرفه</strong>، مثل كلمة سر أو سؤال أمان</li><li>شيء <strong>نملكه</strong>، مثل تطبيق استيثاق أو رمز أمان security token</li><li>شيء <strong>نكون نحن عليه</strong>، مثل بصمة الأصابع أو الصوت</li></ol><p dir="rtl">من العوامل الشائعة تطبيق <strong>OATH-TOTP</strong> مثل Google Authenticator، إنّ (OATH-TOTP (Open Authentication Time-Based One-Time Password الاستيثاق المفتوح لكلمة سر لمرّة واحد مُعتمِدة على الزمن هو عبارة عن ميثاق protocol مفتوح يقوم بتوليد كلمة سر صالحة للاستخدام لمرّة واحدة تكون عادةً عددًا من 6 أرقام يتم تجديده كل 30 ثانية.</p><p dir="rtl">سيشرح هذا الدّرس كيفيّة تمكين استيثاق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> باستخدام تطبيق <strong>OATH-TOTP</strong> بالإضافة لمفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> ، حيث سيتطلّب تسجيل الدخول إلى خادومنا عبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> عاملين اثنين عبر قناتين ممّا يجعله أكثر أمانًا من كلمة السّر أو مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> لوحدهما.</p><h2 dir="rtl">المتطلبات الأساسية</h2><p dir="rtl">سنحتاج لمتابعة هذا الدّرس إلى:</p><ul dir="rtl"><li>خادوم Ubuntu 14.04.</li><li>مستخدم sudo غير جذري non-root مع إضافة مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، والذي نستطيع إعداده باتّباع درس <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%A7%D9%84%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7%D8%A6%D9%8A-%D9%84%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-1404-r4/">الإعداد الابتدائي لخادوم أوبنتو 14.04</a>.</li><li>هاتف ذكي أو لوحي tablet مُثبَّت عليه تطبيق OATH-TOTP مثل Google Authenticator (روابط تنزيله من أجل <a rel="external nofollow" href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&amp;hl=en">Android</a> و <a rel="external nofollow" href="https://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8">iOS</a>).</li></ul><h2 dir="rtl">الخطوة الأولى – تثبيت libpam-google-authenticator</h2><p dir="rtl">سنقوم في هذه الخطوة بتثبيت وإعداد <strong>PAM</strong> الخاصّة بـ Google.</p><p dir="rtl">إنّ <strong>PAM</strong>، والتي ترمز إلى وحدة الاستيثاق القابلة للإضافة Pluggable Authentication Module، هي عبارة عن بنية تحتيّة للاستيثاق تُستَخدم على أنظمة لينِكس من أجل استيثاق المستخدمين، ولأنّ Google صنعت تطبيق <strong>OATH-TOTP</strong> فقد قامت أيضًا بإنشاء PAM تقوم بتوليد TOTPs ومتوافقة بشكل كامل مع أي تطبيق <strong>OATH-TOTP</strong>.</p><p dir="rtl">نقوم في البداية بتحديث الذاكرة المؤقتة cache لمستودع Ubuntu:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get update</pre><p dir="rtl">نُثبِّت بعدها <strong>PAM</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo apt-get install libpam-google-authenticator</pre><p dir="rtl">وبعد تثبيت <strong>PAM</strong> سنستخدم تطبيق مُساعِد يتم تثبيته مع PAM لتوليد مفتاح TOTP للمستخدم الذي نرغب بإضافة عامل ثانٍ له، يتم توليد هذا المفتاح للمستخدم على أساس المستخدم وليس على أساس النّظام، ويعني هذا أنّ كل مستخدم يريد استعمال تطبيق استيثاق TOTP سيحتاج لتسجيل الدخول وتشغيل التطبيق المُساعِد للحصول على المفتاح الخاص به:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">google-authenticator</pre><p dir="rtl">بعد تنفيذ الأمر سيتم سؤالنا عدّة أسئلة، يطلب السؤال الأول معرفة إذا ما كان يجب أن تكون رموز الاستيثاق authentication tokens على أساس زمني.</p><p dir="rtl">يسمح PAM هذا برموز على أساس زمني time-based أو على أساس تتابعي sequential-based، يعني استخدام رموز على أساس تتابعي أنّ الشيفرة code تبدأ في نقطة مُعيّنة وبعدها تقوم بزيادة الشيفرة بعد كل استخدام، ويعني استخدام رموز على أساس زمني أنّ الشيفرة تتغير بشكل عشوائي بعد انقضاء وقت مُحدّد، سنختار الرموز على أساس زمني لأنّ هذا ما تتوقعه تطبيقات مثل Google Authenticator، لذا نجيبه بنعم:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Do you want authentication tokens to be time-based (y/n) y</pre><p dir="rtl">بعد الإجابة على هذا السؤال سيتم تمرير الكثير من الخَرْج output، ومن ضمنه شيفرة QR كبيرة، تأكّد من تسجيلك للمفتاح السّري secret key، شيفرة التحقيق verification code، وشيفرات البداية في حالات الطوارئ emergency scratch codes في مكان آمن مثل مُدير كلمات السّر.</p><p dir="rtl">عند هذه النقطة نستخدم تطبيق الاستيثاق authenticator الموجود على هاتفنا لمسح scan شيفرة QR أو نكتب يدويًّا المفتاح السّري، إن كانت شيفرة QR كبيرة جدًّا لمسحها نستطيع استخدام الرابط الموجود أعلاها للحصول على نسخة أصغر منها، حالما تتم إضافتها سنرى رمزًا مُكوَّنًا من 6 أرقام يتغيّر كل 30 ثانية في تطبيقنا.</p><p dir="rtl">تقوم بقيّة الأسئلة بإعلام PAM كيف يعمل، سنمر عليها واحدًا تلو الآخر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Do you want me to update your "~/.google_authenticator" file (y/n) y</pre><p dir="rtl">يقوم هذا بشكل أساسي بكتابة المفتاح والخيارات إلى الملف <span style="font-family:courier new,courier,monospace;">google_authenticator.</span>، إن قلنا "لا" سيخرج البرنامج ولن تتم كتابة أي شيء، والذي يعني أنّ تطبيق الاستيثاق authenticator لن يعمل.</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y</pre><p>نمنع عندما نجيب على هذا السؤال بنعم هجمات الإعادة replay attack بأن نجعل كل رمز تنتهي صلاحيّته مباشرة بعد استخدامه، وهذا يمنع المُهاجِم من التقاط الرّمز الذي استخدمناه للتو وتسجيل الدخول به.</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) n</pre><p dir="rtl">تسمح إجابة نعم هنا بثمانية رموز صالحة خلال فترة 4 دقائق، وبإجابتنا "لا" نقوم بتحديدها إلى 3 رموز صالحة خلال فترة 1:30 دقيقة، إن لم تكن لديك مشكلة مع هذه الفترة فالإجابة "لا" هنا هي الخيارة الأكثر أمانًا.</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y</pre><p dir="rtl">يعني تحديد المُعدَّل Rate limiting أنّ المُهاجِم البعيد يستطيع فقط أن يحاول عدد مُحدَّد من التخمينات قبل أن يتم حظره، إن لم نقم مُسبقًا بإعداد تحديد المُعدَّل بشكل مباشر داخل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> فإنّ فعل هذا هنا هو تقنية رائعة.</p><h2 dir="rtl">الخطوة الثانية – إعداد OpenSSH</h2><p dir="rtl">إنّ الخطوة التالية الآن هي إعداد <strong><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></strong> لاستخدام مفتاح TOTP لدينا، سنحتاج أن نخبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> عن PAM ومن ثم نقوم بإعداد <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> لاستخدامه.</p><p dir="rtl">نفتح أولًا ملف الإعدادات <span style="font-family:courier new,courier,monospace;">sshd</span> لتحرير باستخدام <strong>nano</strong> أو مُحرِّر النصوص المُفضَّل لدينا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/pam.d/sshd</pre><p dir="rtl">نضيف السطر التالي إلى نهاية الملف:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">. .
\# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok</pre><p dir="rtl">تُخبِر الكلمة "nullok" الموجودة في النهاية PAM أنّ طريقة الاستيثاق هذه اختياريّة، فيسمح هذا للمستخدمين الذين لا يملكون مفتاح OATH-TOTP أن يظلّوا قادرين على تسجيل الدخول باستخدام مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الخاص بهم، أمّا إن كان جميع المستخدمين يملكون مفتاح OATH-TOTP فنستطيع حذف "nullok" من هذا السّطر لجعل الاستيثاق مُتعدِّد العوامل MFA إجباريًّا.</p><p dir="rtl">نحفظ ونغلق الملف.</p><p dir="rtl">نقوم بعدها بإعداد <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> ليدعم هذا النوع من الاستيثاق، نفتح ملف إعدادات <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> لتحريره:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/ssh/sshd_config</pre><p dir="rtl">نبحث عن <strong>ChallengeResponseAuthentication</strong> ونعيّن قيمتها إلى <strong>yes</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">. . .
\# Change to yes to enable challenge-response passwords (beware issues with
\# some PAM modules and threads)
ChallengeResponseAuthentication yes
. . .</pre><p dir="rtl">نحفظ ونغلق الملف، ونعيد تشغيل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> لإعادة تحميل ملفّات الإعدادات:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service ssh restart</pre><h2 dir="rtl">الخطوة الثالثة – جعل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> على علم بالاستيثاق مُتعدد العوامل MFA</h2><p dir="rtl">سنختبر في هذه الخطوة إذا ما كان مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> يعمل.</p><p dir="rtl">نفتح أولًا طرفيّة terminal أخرى ونحاول الدخول عبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> إلى الخادوم، سنلاحظ أنّنا سجلّنا الدخول إلى هذه الجلسة الثانية باستخدام مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الخاص بنا بدون إدخال شيفرة التحقيق أو كلمة السّر، حدث هذا لأنّ مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> يقوم بشكل افتراضي بتجاوز جميع خيارات الاستيثاق الأخرى، نحتاج أن نُخبِر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> أن يستخدم شيفرة TOTP ومفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> بدلًا من كلمة السر.</p><p dir="rtl">نفتح الآن ملف الإعدادات <span style="font-family:courier new,courier,monospace;">sshd</span> مرّة أخرى:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/ssh/sshd_config</pre><p dir="rtl">نبحث عن السطر <strong>PasswordAuthentication</strong> ونزيل التعليق عنه بحذف الحرف # في بداية السّطر ونقوم بتحديث قيمته إلى <strong>no</strong>، يُخبِر هذا <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> ألّا يقوم بالسؤال عن كلمة السّر.</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">. . .
\# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
. . .</pre><p>نضيف بعد ذلك السطر التالي إلى أسفل الملف، والذي يُخبِر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> ما هي طرق الاستيثاق المطلوبة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">. . .
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive</pre><p dir="rtl">نحفظ ونغلق الملف.</p><p dir="rtl">نفتح بعدها ملف إعدادات PAM sshd:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/pam.d/sshd</pre><p dir="rtl">نقوم بإيجاد السطر <strong>include common-auth@</strong> وجعله كتعليق بإضافة الحرف # كالحرف الأول في هذا السطر، يُخبِر هذا PAM ألّا تسأل عن كلمة السر، وقد قمنا سابقًا بإخبار <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> ألّا تفعل هذا في <strong>sshd_config</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">. . .
# Standard Un*x authentication.
#@include common-auth
. . .</pre><p dir="rtl">نحفظ ونغلق الملف ومن ثم نعيد تشغيل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service ssh restart</pre><p dir="rtl">نحاول الآن تسجيل الدخول إلى الخادوم مرّة أخرى، ينبغي أن نرى أنّنا قمنا بالاستيثاق بشكل جزئي باستخدام مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الخاص بنا ومن ثمّ حصلنا على مُحِث prompt من أجل شيفرة التحقيق verification code، والذي سيبدو مشابهًا لما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh sammy@your_server_ip

Authenticated with partial success.
Verification code:</pre><p dir="rtl">نُدخِل شيفرة التحقيق من تطبيق <strong>OAUTH-TOTP</strong> لدينا، وسيتم تسجيل دخولنا إلى الخادوم، نمتلك الآن الاستيثاق مُتعدِّد العوامل MFA مُمكَّنًا من أجل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>.</p><h2 dir="rtl">الخاتمة</h2><p dir="rtl">وكما يحدث مع أي نظام نقوم بتمنيعه وتأمينه سنصبح مسؤولين عن إدارة هذا الأمان، ويعني هذا في هذه الحالة عدم فقدان مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الخاص بنا أو مفتاح أمان TOTP، ومع ذلك قد يحدث هذا في بعض الأحيان ونفقد التحكّم بالمفاتيح التي تجعلنا نُسجِّل الدخول.</p><p>نجد هنا بعض الاقتراحات لاستعادة النفاذ إلى خادومنا:</p><ul dir="rtl"><li><strong>إن فقدنا تطبيق TOTP أو لم نعد نملك نفاذًا إليه</strong>، نستخدم شيفرات الاستعادة recovery codes كشيفرة للتحقيق، قد يحدث هذا إن اشترينا هاتفًا جديدًا ونسينا تصدير مفاتيحنا من الهاتف القديم، أو نفذت بطارية هاتفنا.</li><li><strong>إن فقدنا مفتاح الأمان secret key والنسخة الاحتياطية</strong>، نقوم بإعادة تسمية أو حذف الملف <span style="font-family:courier new,courier,monospace;">google_authenticator./~</span>، حيث يحرص هذا ألّا تعود PAM على معرفة بإعداداتنا وألّا تطلب منّا الرمز، تأكّد من أنّ الملف <span style="font-family:courier new,courier,monospace;">etc/pam.d/sshd/</span> لا زال يملك "nullok" في آخره، مثل الخطوة الثانية، وإن غيّرنا هذا نقوم بإعادة تشغيل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>.</li><li><strong>إن فقدنا مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الخاص بنا</strong>، نقوم بإزالة المفتاح العام القديم من <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/authorized_hosts./~</span>، ونستبدله بمفتاح جديد.</li></ul><p dir="rtl">بامتلاك عاملين (مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>+رمز MFA token) عبر قناتين اثنتين (حاسوبنا+هاتفنا المحمول) جعلنا من المستحيل تقريبًا لأي عميل خارجي أن يشقّ طريقه بالقوة القاسية brute force إلى داخل جهازنا عبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> وقمنا بزيادة أمان جهازنا بشكل رائع.</p><p dir="rtl"><a rel="external nofollow" name="_GoBack"></a> ترجمة -وبتصرّف- لـ <a rel="external nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-set-up-multi-factor-authentication-for-ssh-on-ubuntu-14-04">How To Set Up Multi-Factor Authentication for <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> on Ubuntu 14.04</a> لصاحبه Michael Holley.</p>
]]></description><guid isPermaLink="false">157</guid><pubDate>Wed, 16 Dec 2015 20:46:25 +0000</pubDate></item><item><title>&#x623;&#x646;&#x641;&#x627;&#x642; SSH&#x60C; &#x645;&#x627;&#x647;&#x64A;&#x62A;&#x647;&#x627; &#x648;&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x625;&#x639;&#x62F;&#x627;&#x62F;&#x647;&#x627;</title><link>https://academy.hsoub.com/devops/security/ssh/%D8%A3%D9%86%D9%81%D8%A7%D9%82-ssh%D8%8C-%D9%85%D8%A7%D9%87%D9%8A%D8%AA%D9%87%D8%A7-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D9%87%D8%A7-r76/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_08/ssh3.png.0be1850b45204f105a902ad7257739f3.png" /></p>

<p id="-ssh-ssh-tunnels-">تنفيق النقل (أي نقله) عبر نفق SSH آمن (SSH Tunnel)، هو طريقة ممتازة للعمل حول إعدادات جدار ناري تقييدي خاص بـ SSH. ويُعتبر أيضا طريقة رائعة لتشفير أو فك تشفير نقل الشّبكة (network traffic).</p><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_08/ssh3.png.57e95370bf31d31f49b88b3fa955d8eb.png"><img data-fileid="4267" class="ipsImage ipsImage_thumbnailed" alt="ssh3.thumb.png.f233e2f40bea687a2c29cb089" src="https://academy.hsoub.com/uploads/monthly_2015_08/ssh3.thumb.png.f233e2f40bea687a2c29cb0890aafb49.png"></a></p><h2 id="-">ضبط تنفيق محلي إلى خادوم</h2><p>يُمكن استخدام اتّصالات SSH لتنفيق النقل (أي نقل البيانات عبر أنفاق) من المنافذ على المُضيف المحلي إلى منافذ أخرى على مُضيف بعيد.</p><p>أوّلاً، يُؤسَّس اتّصال SSH مع المُضيف البعيد. أمّا على الخادوم البعيد، يتم إنشاء اتّصال إلى عنوان شبكة خارجيّة (أو داخليّة) مُقدّم من المُستخدم، والنّقل إلى هذا الموقع <strong>يُنفّق</strong> (أي يستخدم نفقا) إلى الحاسوب المحلي على منفذ مُحدّد. هذا الأمر يُستخدم عادة للتنفيق نحو بيئة شبكية أقل تقييدا لتجاوز جدار ناري (الأمر أشبه بـآلية عمل VPN)، أي أن هناك طرفا ثالثا (كالبروكسي أو خادوم في منتصف الطريق يمر عليه نقل الشبكة Network traffic). ويُستعمل أيضا بشكل شائع للوصول إلى واجهة ويب من نوع 'مُضيف محلي فقط' من مكان بعيد. لإنشاء نفق محلي نحو الخادوم البعيد، ستحتاج إلى استخدام مُعامل <strong><span style="font-family:courier new,courier,monospace;">L-</span></strong> عند الاتّصال ويجب عليك توفير 3 معلومات إضافية:</p><ul><li>المنفذ المحلي الذي ترغب في الوصول إلى الاتّصال المُنفّق منه.</li><li>المُضيف الذي ترغب في أن يتصل به المُضيف البعيد.</li><li>المنفذ الذي تريد أن يتصل منه المُضيف البعيد. </li></ul><p>وهي مُعطاة بالترتيب أعلاه (مُفرّقة بنقطتين بين كل منها) كقيم للمعامل <strong><span style="font-family:courier new,courier,monospace;">L-</span></strong>. وسنستخدم أيضا المُعامل <strong><span style="font-family:courier new,courier,monospace;">f-</span></strong> الذي يُحيل SSH للعمل في الخلفيّة قبل التشغيل، وكذلك المُعامل <strong><span style="font-family:courier new,courier,monospace;">N-</span></strong>، الذي لا يفتح شلّا أو يُنفذ برنامجا على الجهة البعيدة. </p><p>على سبيل المثال، للاتّصال بـ example.com على المنفذ رقم 80 على المُضيف البعيد، متيحا الاتّصال على جهازك المحلي عبر المنفذ رقم 8888، يُمكنك أن تكتب الآتي: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh -f -N -L 8888:example.com:80 username@remote_host </pre><p>إذا قمت بالدّخول إلى <span style="font-family:courier new,courier,monospace;">127.0.0.1:8888</span> على مُتصفّحك المحلي، ستحصل على محتوي example.com من المنفذ رقم 80. تركيب جملة أعمّ يُمكن أن يكون كالتّالي: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh -L your_port:site_or_IP_to_access:site_port username@host </pre><p>بما أنّ الاتّصال يتم في الخلفّية يجب عليك إيجاد رقم PID لقتله (إغلاقه)، يُمكنك فعلُ ذلك بالبحث عن المنفذ الذي وضّفته: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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 </pre><p>يُمكنك بعدها قتلُ العمليّة باستهداف رقم PID، وهو الرقم على العمود الثّاني الذّي يُوافق أمر SSH :</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">kill 5965 </pre><p>هناك خيّار آخر وهو بدء الاتّصال بدون المُعامل <strong><span style="font-family:courier new,courier,monospace;">f-</span></strong>. الأمر الذي سيُبقي الاتّصال في الواجهة، مانعاً استخدام نافذة الطّرفية كامل مدّة الإحالة. والإفادة هنا هي إمكانية إيقاف النّفق بالضّغط على "<span style="font-family:courier new,courier,monospace;">CTRL-C</span>”.</p><h2 id="-">ضبط تنفيق بعيد إلى خادوم</h2><p>يُمكن استعمال اتّصالات SSH لتنفيق النّقل من منافذ على المُضيف المحليّ إلى منافذ على المُضيف البعيد. الاتّصال يُخلق نحو مُضيف بعيد على النفق البعيد، خلال إنشاء النّفق يُحدّد رقم منفذ بعيد. هذا المنفذ على المُضيف البعيد سيُنفّق نحو مُضيف ومنفذ مربوطين من الجهاز المحليّ. هذا سيُخوّل الحاسوب البعيد للوصول إلى مُضيف عبر جهازك المحليّ. يُمكنُ لهذا أن يكونَ مُفيداً إذا احتجتَ للسّماح بالوصول إلى شبكة داخليّة مُغلقة نحو اتّصالات خارجيّة. إذا كان الجدار النّاري يسمح بالاتّصالات خارج الشّبكة فإنّ هذا سيُخولُ لك الاتّصال إلى جهاز بعيد ونفق نقل من ذلك الجهاز نحو مكان على الشبكة الدّاخليّة. لإنشاء نفق بعيد نحو خادومك البعيد، ستحتاج إلى تمرير المعامل <span style="font-family:courier new,courier,monospace;">R-</span> عند الاتّصال ويجب عليك توفير 3 معلومات إضافيّة:</p><ul><li>رقم المنفذ الذي يُمكن للمُضيف البعيد أن يصل إلى الاتّصال المُنفّق منه.</li><li>المُضيف الذي ترغب في أن يتّصل به جهازك المحلي.</li><li>المنفذ الذي ترغب في أن يتّصل منه جهازك المحليّ. </li></ul><p>وهي مُعطاة بالترتيب أعلاه (مُفرّقة بنقطتين بين كل منها) كقيم للمعامل <span style="font-family:courier new,courier,monospace;">R-</span>. وسنستخدم أيضا المُعامل <span style="font-family:courier new,courier,monospace;">f-</span> الذي يُحيل SSH للعمل في الخلفيّة قبل التشغيل، وكذلك المُعامل <span style="font-family:courier new,courier,monospace;">N-</span>، الذي لا يفتح شلّا (shell) أو يُنفذ برنامجا على الجهة البعيدة.</p><p>على سبيل المثال، للاتّصال ب example.com على المنفذ رقم 80 على المُضيف المحليّ، متيحا الاتّصال على الجهاز البعيد عبر المنفذ رقم 8888، يُمكنك أن تكتب الآتي: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh -f -N -R 8888:example.com:80 username@remote_host </pre><p>إذا قمت بالدّخول إلى 127.0.0.1:8888 على مُتصفّح الخادوم، ستحصل على محتوي example.com من المنفذ رقم 80. تركيب جملة أعمّ يُمكن أن يكون كالتّالي: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh -R your_port:site_or_IP_to_access:site_port username@host </pre><p>بما أنّ الاتّصال يتم في الخلفّية يجب عليك إيجاد رقم PID لقتله (إغلاقه)، يُمكنك فعلُ ذلك بالبحث عن المنفذ الذي وضّفته:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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 </pre><p>يُمكنك بعدها قتلُ العمليّة باستهداف رقم PID، وهو الرقم على العمود الثّاني الذّي يُوافق أمر SSH :</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">kill 5965 </pre><p>هناك خيّار آخر وهو بدء الاتّصال بدون المُعامل <span style="font-family:courier new,courier,monospace;">f-</span>. الأمر الذي سيُبقي الاتّصال في الواجهة، مانعاً استخدام نافذة الطّرفية كامل مدّة الإحالة. والإفادة هنا هي إمكانية إيقاف النّفق بالضّغط على "<span style="font-family:courier new,courier,monospace;">CTRL-C</span>”.</p><h2 id="-">ضبط تنفيق ديناميكي نحو خادوم بعيد</h2><p>يُمكن استعمال اتّصالات SSH لتنفيق النّقل من منافذ على المُضيف المحليّ إلى منافذ على المُضيف البعيد. النّفق الديناميكي مُماثل للنّفق المحليّ من حيث أنّه يُخول الجهاز المحلي للاتّصال بموارد أخرى عبر مُضيف بعيد. يقوم النّفق الديناميكي بهذا ببساطة عبر تحديد منفذ محلي واحد. التطبيقات التي ترغب في أن تستغلّ الفرصة للتنفيق من هذا المنفذ يجب أن تكون قادرة على التواصل باستخدام بروتوكول SOCKS ليُعاد توجيه الحزم بنجاح على الجانب الآخر من النّفق. النّقلُ المُمَرّر نحو المنفذ المحلي سيُرسَلُ إلى المُضيف البعيد. من هناك سيُترجم بروتوكول SOCKS لإنشاء اتّصالٍ نحو النهاية المرغوبة. هذا الضّبط يسمح لتطبيق من نوع SOCKS-capable بالاتّصال بأي عدد من الأماكن عبر خادوم بعيد بدون أنفاق ساكنة مُتعدد لإنشاء الاتّصال. </p><p>سنُمرّر المُعامل <span style="font-family:courier new,courier,monospace;">D- </span>مع رقم المنفذ المحلي الذي نرغب أن نصل إلى النّفق منه. وسنستخدم أيضا المُعامل <span style="font-family:courier new,courier,monospace;">f-</span> الذي يُحيل SSH للعمل في الخلفيّة قبل التشغيل، وكذلك المُعامل <span style="font-family:courier new,courier,monospace;">N-</span>، الذي لا يفتح شلّا أو يُنفذ برنامجا على الجهة البعيدة. على سبيل المثال، لإنشاء اتّصال مع نفق على المنفذ "7777” سنكتب الأمر: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh -f -N -D 7777 username@remote_host </pre><p>يُمكنك الآن أن تبدأ توجيه تطبيق SOCKS-aware (كمُتصفح الويب)، نحو المنفذ الذي اخترته سيرسل التّطبيق معلوماته إلى المقبس المربوط مع المنفذ. طريقة توجيه النّقل نحو منفذ SOCKS تختلف حسب التّطبيق، في فايرفوكس Firefox على سبيل المثال الموقع العام هو:</p><p style="text-align: center;"><strong>Preferences &gt; Advanced &gt; Settings &gt; Manual proxy configurations </strong></p><p>أما في Chrome فتستطيع تشغيل التطبيق مع تحديد مُعامل –proxy-server= . سترغب في استخدام واجهة المُضيف المحلي (localhost interface ) ورقم المنفذ الذي أحَلْتَه. بما أنّ الاتّصال يتم في الخلفّية يجب عليك إيجاد رقم PID لقتله (إغلاقه)، يُمكنك فعلُ ذلك بالبحث عن المنفذ الذي وضّفته:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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 </pre><p>يُمكنك بعدها قتلُ العمليّة باستهداف رقم PID، وهو الرقم على العمود الثّاني الذّي يُوافق أمر SSH : </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">kill 5965 </pre><p>هناك خيّار آخر وهو بدء الاتّصال بدون المُعامل <span style="font-family:courier new,courier,monospace;">f-</span>. الأمر الذي سيُبقي الاتّصال في الواجهة، مانعاً استخدام نافذة الطّرفية كامل مدّة الإحالة. والإفادة هنا هي إمكانية إيقاف النّفق بالضّغط على "<span style="font-family:courier new,courier,monospace;">CTRL-C</span>”.</p><h2 id="-">استعمال شيفرات الإلغاء للتحكم بالاتّصالات</h2><p>حتى عند إنشاء جلسة SSH، يُمكن التحكم في الاتّصال من داخل الطرفيّة. يُمكن القيام بهذا مع شيء اسمه "شيفرات الإلغاء (SSH escape codes)”  والتي تُخوّل لنا التّفاعل مع تطبيق SSH المحلي من داخل الجلسة.</p><h3 id="-">إجبار إلغاء الاتّصال من جهة العميل (كيف تخرج من جلسة مُتجمّدة لا تقبل الإجابة)</h3><p>تعتبر إمكانيّة التحكم في جوانب مُعيّنة من الجلسة بالدّاخل من أهم مُميّزات OpenSSH التي غالبا ما لا يُلاحظها الكثيرون. يُمكن تشغيل هذه الأوامر بتقديمها برمز التحكم "~" داخل جلسة SSH. ستُفسّرُ أوامر التحكم فقط إذا كانت أول شيء مكتوب بعد سطر جديد، لذلك اضغط دائما على ENTER مرّة أو مرّتين كإجراء احتياطي. من أكثر الإمكانيات التي يُتيحها التحكم قوة هي إمكانية إلغاء الاتّصال من جهة العميل. اتّصالات SSH عادة ما تُغلق من طرف الخادوم، لكنّ هذا يُمكن أن يكون مُشكلة إذا كانت هناك مشاكل في الخادوم أو إذا قُطع الاتّصال. يُمكن أن تُغلق الاتصال بشكل نظيف من جهة العميل. لإغلاق اتّصال من العميل، استخدم رمز التحكم "~”، مع إضافة نقطة "." . إذا كانت هناك مشاكل في الاتّصال في الغالب ستجد نفسك مع جلسة طرفيّة مُتجمّدة. اكتب الأمر ولو لم تشعر بأنك تكتب شيئا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[ENTER] ~. </pre><p>يجب على الاتّصال أن يُغلق فورا، وسيرجعك إلى جلسة الشل المحليّة.</p><h3 id="-ssh-">وضع جلسة SSH في الخلفيّة</h3><p>تعتبر إمكانيّة التحكم في جوانب مُعيّنة من الجلسة بالدّاخل من أهم مُميّزات OpenSSH التي غالبا ما لا يُلاحظها الكثيرون. يُمكن تشغيل هذه الأوامر بتقديمها برمز التحكم "~" داخل جلسة SSH. ستُفسّرُ أوامر التحكم فقط إذا كانت أول شيء مكتوب بعد سطر جديد، لذلك اضغط دائما على ENTER مرّة أو مرّتين كإجراء احتياطي. يُعطينا التحكم إمكانية وضع جلسة SSH لتعمل في الخلفيّة. وللقيّام بذلك سنحتاج إلى كتابة رمز التحكم "~" وننفّذ بعده اختصار لوحة المفاتيح (<span style="font-family:courier new,courier,monospace;">CTRL-Z</span>) لوضع العمليّة في الخلفيّة :</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[ENTER] ~[CTRL-Z] </pre><p>ما قمنا به سينقل الاتّصال ليعمل في الخلفيّة، وسيرجعنا إلى جلسة الشل المحليّة. للرجوع إلى جلسة SSH يُمكنك استعمال آليّة التّحكم. يُمكنك إعادة تفعيل آخر عمليّة محالة إلى الخلفية بكتابة: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">fg </pre><p>إذا كنت تملك أكثر من عمليّة في الخلفيّة، يُمكنك رؤية العمليّات المتاحة بكتابة: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">jobs 
[1]+ Stopped ssh username@some_host 
[2] Stopped ssh username@another_host </pre><p>يُمكنك بعد ذلك جلب أي عمليّة إلى الأمام باستعمال الدليل في العمود الأول مع رمز % :</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">fg %2</pre><h2 id="-ssh-">تعديل إعدادات إحالة منفذ على اتّصال SSH موجود</h2><p>تعتبر إمكانيّة التحكم في جوانب مُعيّنة من الجلسة بالدّاخل من أهم مُميّزات OpenSSH التي غالبا ما لا يُلاحظها الكثيرون. يُمكن تشغيل هذه الأوامر بتقديمها برمز التحكم "~" داخل جلسة SSH. ستُفسّرُ أوامر التحكم فقط إذا كانت أول شيء مكتوب بعد سطر جديد، لذلك اضغط دائما على ENTER مرّة أو مرّتين كإجراء احتياطي.</p><p>هذه الميّزة تسمح لنا بالتعديل على إعدادات إحالة المنفذ بعد أن يؤسّس بالفعل اتّصال مُسبق، ويُخوّل لك إنشاء أو هدم قواعد إحالة منفذ في الوقت الفعلي. هذه القدرات جزء من واجهة سطر أوامر SSH، ويُمكن الوصول إليها خلال الجلسة باستخدام رمز التّحكم (~) و"C" :</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[ENTER] ~C
<span style="line-height: 22.3999996185303px;">ssh&gt;</span>
</pre><p> سوف تُمنَح موجه أوامر خاص بSSH، موجه الأوامر هذا يتيح مجموعة محدودة جدّا من الأوامر، يمكنك كتابة <span style="font-family:courier new,courier,monospace;">h-</span> من الموجه لرؤية الخيّارات المتاحة. إذا كانت المُخرجات خاليّة، سيجب عليك زيادة إسهاب (verbosity) مخرجات SSH باستخدام <span style="font-family:courier new,courier,monospace;">v~</span> عدّة مرّات:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[ENTER] ~v ~v ~v ~C -h</pre><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p>وكما ترى، يُمكنك بسهولة تنفيذ أي من الخيارات باستخدام الخيّار المناسب (اُنظر قسم الإحالة لمزيد من المعلومات). يُمكنك أيضا هدم نفق مع الأمر <span style="font-family:courier new,courier,monospace;">K-</span> قبل رمز نوع الإحالة. على سبيل المثال، لإغلاق إحالة محليّة (<span style="font-family:courier new,courier,monospace;">L-</span>)، يمكنك أن تستعمل الأمر <span style="font-family:courier new,courier,monospace;">KL-</span>. وستحتاج إلى توفير رقم المنفذ. لضبط إحالة منفذ محلي، يمكنك استعمال:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[ENTER] ~C -L 8888:127.0.0.1:80 </pre><p>يستطيع المنفذ 8888 على جهازك المحلي الآن التواصل مع خادوم الويب على المُضيف الذي تتصلُ به. عندما تنتهي، يُمكنك أن تهدم الإحالة بكتابة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">[ENTER] ~C -KL 8888</pre><h2 id="-">خاتمة</h2><p>التعليمات أعلاه يجب أن تغطي مُعظم ما يحتاجه المستخدمون عن SSH. إذا كان لديك أي نصائح أخرى أو إذا رغبت في نشر الإعدادات والطّرق المُفضّلة لديك، خذ راحتك ولا تتردد في استخدام التعليقات أدناه.</p><p>ترجمة -مع شيءٍ من التصرّف- للقسم الثالث والأخير من مقال: <a rel="external nofollow" target="_blank" href="https://www.digitalocean.com/community/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys">SSH Essentials: Working with SSH Servers, Clients, and Keys</a>.</p><p>حقوق الصورة البارزة: <a rel="external nofollow" href="http://www.freepik.com/free-vector/traffic-icons_794116.htm">Designed by Freepik</a>.</p>
]]></description><guid isPermaLink="false">76</guid><pubDate>Mon, 22 Jun 2015 13:12:34 +0000</pubDate></item><item><title>&#x623;&#x633;&#x627;&#x633;&#x64A;&#x627;&#x62A; &#x648;&#x62E;&#x64A;&#x627;&#x631;&#x627;&#x62A; &#x627;&#x644;&#x627;&#x62A;&#x635;&#x627;&#x644; &#x628;&#x62E;&#x627;&#x62F;&#x648;&#x645; &#x639;&#x646; &#x628;&#x639;&#x62F; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; SSH</title><link>https://academy.hsoub.com/devops/security/ssh/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%88%D8%AE%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%B9%D9%86-%D8%A8%D8%B9%D8%AF-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-ssh-r74/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_08/ssh-2.png.e3805d07d18b4c49c295400a06425f0f.png" /></p>

<p id="-">هذا القسم سيُغطّي بعضاً من أساسيّات الاتّصال بخادوم مع SSH، وهو تكملة لسلسلة "<a href="https://academy.hsoub.com/search/?tags=%D9%85%D8%AF%D8%AE%D9%84+%D8%A5%D9%84%D9%89+ssh">مدخل إلى ssh</a>"، بعد أن تكلمنا في الدرس الأول منها عن <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8F-%D9%85%D8%B9-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-ssh%D8%8C-%D8%A7%D9%84%D8%B9%D9%85%D9%84%D8%A7%D8%A1-%D9%88%D8%A7%D9%84%D9%85%D9%81%D8%A7%D8%AA%D9%8A%D8%AD-r55/">العملاء والمفاتيح</a>.</p><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_08/ssh-2.png.2edb03954dcad1dc3895d754507afae7.png"><img data-fileid="4199" class="ipsImage ipsImage_thumbnailed" alt="ssh-2.thumb.png.4c8f4fe1bc7a7eaa198525a9" src="https://academy.hsoub.com/uploads/monthly_2015_08/ssh-2.thumb.png.4c8f4fe1bc7a7eaa198525a906b2a3ec.png"></a></p><h2 id="-">الاتصال بخادوم عن بعد</h2><p>للاتّصال بخادوم عن بعد وفتح جلسة طرفية هناك، يمكنك استعمال أمر ssh. أبسط طريقة تفترض أنّ اسم المُستخدم الخاصّ بك هو نفسه اسم المُستخدم على الخادوم، إذا كان هذا صحيحاً، يُمكنك الاتّصال باستخدام:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh remote_host </pre><p>إذا كان اسم المُستخدم مختلفاً على الخادوم، ستحتاج إلى تمرير اسم مستخدم الخادوم كالتالي: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh username@remote_host </pre><p>في المرة الأولى التّي تتصل بمُضيف جديد، سترى رسالة تبدو كالتّالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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</pre><p>اكتب <span style="font-family:courier new,courier,monospace;">yes</span> لإكمال الاتّصال بالمُضيف. إذا كنت تستخدم فحص لكلمة المرور، سيُطلب منك إدخالها هنا. إذا كنت تستخدم مفاتيح SSH، سيُطلب منك إدخال كلمة المُرور لمفتاحك الخاصّ إذا كنت قد عيّنتها من قبل، إذا كان الأمر غير ذلك فستدخل آلياً إلى الخادوم.</p><h2 id="-">تشغيل أمر واحد على الخادوم البعيد</h2><p>لتشغيل أمر واحد على الخادوم عن بعد عوضا عن فتح جلسة طرفية، يُمكنك إضافة الأمر بعد معلومات الاتّصال: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh username@remotehost الأمرالمُراد_تشغيله </pre><p>هذا الأمر سيقوم بالاتصال بالخادوم، ثم يستثيق باستخدام المعلومات وينفّذ الأمر الذي حدّدته. وسيُغلق الاتّصال مُباشرة بعد ذلك.</p><h2 id="-">الدخول إلى خادوم من منفذ آخر</h2><p>يقوم عفريت SSH (بالانجليزية: ssh daemon وهو برنامج يعمل في الخلف بشكل دائم على النظام) بالدّخول إلى الخادوم من المنفذ رقم 22 تلقائيّاً. عميل SSH الخاص بك سيفترض أن هذه هي الحالة عند مُحاولة الاتّصال. إذا كان خادوم SSH يستمع من منفذ غير معياريّ (سيُشرح الأمر لاحقا في قسم آخر)، سيجب عليك تحديد رقم المنفذ الجديد عند محاولة الدّخول. يُمكنك فعل هذا بتحديد رقم المنفذ مع خيّار <span style="font-family:courier new,courier,monospace;">p-</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh -p رقم_المنفذ username@remote_host </pre><p>لتجنّب فعل هذا في كلّ مرة تدخلُ إلى الخادوم، يُمكنك إنشاء أو تعديل ملفّ إعدادات في مُجلّد <span style="font-family:courier new,courier,monospace;">ssh./~</span> داخل مُجلّد المنزل في جهازك المحليّ. عدّل أو أنشئ الملفّ بكتابة: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">nano ~/.ssh/config </pre><p>يُمكنك هنا تحديد إعدادات خيارات المُضيف. لتحديد منفذ جديد، استخدم نموذجاً كالتّالي: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Host remote_alias HostName remote_host Port port_num </pre><p>هذا سيُمكّنك من الدّخول إلى الخادوم بدون تحديد رقم المنفذ كلّ مرة من سطر الأوامر.</p><h2 id="-ssh-ssh-">إضافة مفاتيح SSH إلى عميل SSH لتجنب كتابة كلمة المرور</h2><p>إذا كنت تمتلك جملة مرور على المفتاح الخاص، سيُطلب منك كتابتها في كلّ مرة تحاول الاتّصال بالمُضيف. لتجنّب الأمر، يُمكنك تشغيل عميل SSH. وهو أداة صغيرة تُخزّن مفتاحك الخاص بعد كتابة كلمة المرور للمرّة الأولى. وستكون مُتاحة طوال مدة جلسة الطّرفيّة، وستخوّل لك الاتصال بدون إعادة كتابة كلمة المرور في المستقبل. هذا الأمر مهم أيضا إذا كنت تريد إحالة معلومات SSH الخاصّة بك (مُبيّنٌ أدناه). لتشغيل عميل SSH، اكتب في جلسة طرفيّة جهازك المحلي: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">eval $(ssh-agent)</pre><p>هذا الأمر سيُشغّل عميل SSH في الخلفيّة. الآن عليك أن تُضيف مفتاحك الخاصّ إلى العميل لكي يتمكن من إدارتها: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh-add Enter passphrase for /home/demo/.ssh/id_rsa: Identity added: /home/demo/.ssh/id_rsa (/home/demo/.ssh/id_rsa) </pre><p>سيتوجب عليك كتابة كلمة المرور (في حال عيّنتها). بعدئذٍ ملف الهوية الخاص بك سيُضاف إلى العميل متيحا لك استخدام مفتاحك بدون إعادة إدخال كلمة المرور مُجدّداً.</p><h2 id="-ssh-">إحالة معلومات SSH الخاصة بك لاستخدامها على خادوم</h2><p>إذا كنت ترغب في أن تكون قادراً على الاتّصال بدون كلمة مرور من خادوم إلى آخر، سيتوجب عليك إحالة معلومات SSH الخاصّة بك. ما يخوّلك للاتّصال بخادوم آخر من الخادوم الذي تتّصل به، باستخدام المعلومات على جهازك المحلي. للبدء يجب عليك أن تمتلك عميل SSH مُشغلا ومضافٌ إليه مفتاح SSH الخاص بك (انظر أعلاه). بعد الانتهاء من هذا، ستحتاج إلى الاتّصال بالخادوم الأول باستعمال خيّار <span style="font-family:courier new,courier,monospace;">A-</span>. هذا الأمر يحيل معلوماتك إلى الخادوم للجلسة الحالية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh -A username@remote_host </pre><p>من الآن يُمكنك الاتصال بمُضيف جديد مُخوّل له الوصول من مفتاح SSH وسوف تدخل كما لو أن مفتاحك الخاص موجود على الخادوم.</p><h2 id="-server-side">إعدادات جهة الخادوم Server-Side</h2><p>هذا القسم يحتوي على بعض من أشهر خيارات إعدادات جهة الخادوم التي يمكن لها تشكيل طريقة استجابة الخادوم وأي من أنواع الاتّصال المسموح بها.</p><h3 id="-">تعطيل فحص كلمة مرور</h3><p>إذا كنت قد ضبطت مفاتيح SSH واختبرتها وتعاملت بها بشكل جيّد، يعتبر تعطيل الفحص بكلمة المرور فكرة جيّدة، هذا سيمنع أي مُستخدم من الاتصال باستخدام SSH مع كلمة مرور. لفعل هذا، اتصل بخادومك وافتح ملفّ <span style="font-family:courier new,courier,monospace;">etc/ssh/sshd_config/</span> بصلاحيّات الجذر: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/ssh/sshd_config </pre><p>ابحث داخل الملفّ عن <span style="font-family:courier new,courier,monospace;">PasswordAuthentication</span> إذا كانت تعليقا أزل رمز التعليق واجعلها <span style="font-family:arial,helvetica,sans-serif;">no</span> لتعطيل الدخول بكلمة المرور: <span style="font-family:courier new,courier,monospace;">PasswordAuthentication no</span> بعد أن تقوم بالتغيير، احفظ وأغلق الملف. يجب عليك إعادة تشغيل خدمة SSH لتطبيق التغييرات. على أبنتو/دبيان: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo service ssh restart </pre><p>على فيدورا / CentOS:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"> sudo service sshd restart </pre><p>الآن جميع الحسابات على النظام ستمنع من الدّخول باستخدام كلمة مرور.</p><h3 id="-ssh">تغيير منفذ عفريت SSH (بالانجليزية: ssh daemon)</h3><p>ينصح بعض الإداريين بتغيير منفذ SSH الافتراضي، يمكن لهذا أن يعين في تقليل عدد محاولات الاتّصال إلى خادومك من قبل البرمجيات الخبيثة. لتغيير المنفذ، سيتوجب عليك الدخول إلى الخادوم الخاص بك. ثم افتح ملفّ <span style="font-family:courier new,courier,monospace;">sshd_config</span> على الخادوم بصلاحيات الجذر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/ssh/sshd_config </pre><p>عندما تدخل، يمكنك تغيير المنفذ الذي يشتغل منه SSH بإيجاد مواصفة Port 22 وتغييرها إلى رقم المنفذ الذي تريد استخدامه. مثلاً لتغيير المنفذ إلى 4444، ضع هذا في ملفّك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Port 4444 </pre><p>احفظ وأغلق الملفّ عندما تنتهي. يجب عليك إعادة تشغيل SSH لتطبيق التغييرات: على أبنتو/دبيان: <span style="font-family:courier new,courier,monospace;">sudo service ssh restart</span> على فيدورا/سنت أو إس: <span style="font-family:courier new,courier,monospace;">sudo service sshd restart </span>بعد إعادة التّشغيل ستحتاج إلى إلى الفحص بتحديد رقم المنفذ (شُرح سابقاً)</p><h3 id="-ssh">تحديد المستخدمين الذين يمكن لهم الاتّصال عبر SSH</h3><p>يُمكنك اتّخاذ خذ بعض الإجراءات لتحديد المُستخدمين الذين يمكنهم الاتّصال عبر SSH، ويمكن ذلك عبر تعديل ملفّ إعدادات SSH. افتح هذا الملف على الخادوم بصلاحيات الجذر: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/ssh/sshd_config </pre><p>الطريقة الأولى لتحديد المستخدمين الذين يمكن لهم الاتّصال هي عبر خاصّية <span style="font-family:courier new,courier,monospace;">AllowUsers</span> . ابحث عن AllowUsers في الملفّ. إذا لم يكن السّطر موجودا فأنشئه في أي مكان. أدرج بعدها اسماء المستخدمين المرغوب في السّماح لهم بالاتّصال عبر SSH:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">AllowUsers user1 user2 </pre><p>احفظ وأغلق الملفّ. أعد تشغيل SSH لتطبيق التغييرات. على أبنتو/دبيان: <span style="font-family:courier new,courier,monospace;">sudo service ssh restart </span>على فيدورا/سنت أو إس: <span style="font-family:courier new,courier,monospace;">sudo service sshd restart </span></p><p>إذا كنت مرتاحا مع إدارة المجموعات أكثر، يُمكنك استعمال <span style="font-family:courier new,courier,monospace;">AllowGroups</span> . في حال كنت ترغب في ذلك أضف المجموعة التي سيُسمح لها بالاتصال (سوف ننشئ هذه المجموعة وسنضيف إليها الأعضاء بعد قليل):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"> AllowGroups sshmembers </pre><p>احفظ وأغلق الملفّ. يُمكنك الآن إنشاء مجموعة (بدون مجلد منزل) توافق المجموعة التّي حدّدتها بكتابة: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo groupadd -r sshmembers</pre><p>تأكّد من أنّك أضفت حساب المستخدم الذي تريد إلى هذه المجموعة. يُمكن القيام بالأمر كالتالي: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo usermod -a -G sshmembers user1 sudo usermod -a -G sshmembers user2 </pre><p>أعد تشغيل SSH لتطبيق التّغييرات. <span style="line-height: 22.3999996185303px;">على أبنتو/دبيان:</span><span style="line-height: 22.3999996185303px;"> </span><span style="line-height: 22.3999996185303px; font-family: 'courier new', courier, monospace;">sudo service ssh restart</span><span style="line-height: 22.3999996185303px;"> على فيدورا/سنت أو إس:</span><span style="line-height: 22.3999996185303px;"> </span><span style="line-height: 22.3999996185303px; font-family: 'courier new', courier, monospace;">sudo service sshd restart</span></p><h3 id="-root">تعطيل ولوج الجذر root</h3><p>يعد تعطيل ولوج الجذر عبر SSH منصوحا به بعد أن تضبط حساب مستخدم بميزة sudo. لفعل ذلك، افتح على الخادوم ملف إعدادات SSH باستخدام الجذر أو مع sudo .</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/ssh/sshd_config</pre><p>ابحث عن<span style="font-family:courier new,courier,monospace;"> PermitRootLogin</span> إذا كانت تعليقا أزل رمز التعليق واجعلها no:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">PermitRootLogin no</pre><p>احفظ الملف وأغلق الملف وأعد تشغيل SSH لتطبيق التّغييرات. <span style="line-height: 22.3999996185303px;">على أبنتو/دبيان:</span><span style="line-height: 22.3999996185303px;"> </span><span style="line-height: 22.3999996185303px; font-family: 'courier new', courier, monospace;">sudo service ssh restart</span><span style="line-height: 22.3999996185303px;"> على فيدورا/سنت أو إس:</span><span style="line-height: 22.3999996185303px;"> </span><span style="line-height: 22.3999996185303px; font-family: 'courier new', courier, monospace;">sudo service sshd restart</span></p><h3 id="-">إتاحة وصول الجذر لأوامر معينة</h3><p>هناك بعض الحالات التي قد ترغب فيها بتعطيل وصول الجذر عامّة، والسّماح لبرمجيّات معيّنة للوصول إليه لتعمل بشكل صحيح، ويُمكنك أن تأخذ النّسخ الاحتياطي كمثال. يُمكن القيّام بهذه العملية عبر ملف<span style="font-family:courier new,courier,monospace;"> authorized_keys</span> الخاصّ بمستخدم الجذر، الذي يحتوي على المفاتيح المُخوّلِ لها استخدام الحساب. أضف المفتاح الذي ترغب في استعماله من جهازك المحلي (يُنصح بإنشاء مفتاح جديد لكل عملية تلقائيّة ) إلى ملفّ authorized_keys الخاصّ بمستخدم الجذر على الخادوم. سنشرح مع أمر <span style="font-family:courier new,courier,monospace;">ssh-copy-id</span> هنا، لكنك تستطيع أي طريقة أخرى للنسخ المفاتيح (ستُشرح في قسم آخر):</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"> ssh-copy-id root@remote_host </pre><p>ادخل الآن إلى الخادوم البعيد، سنحتاج إلى ضبط الدّخول على ملفّ <span style="font-family:courier new,courier,monospace;">authorized_keys</span> لذلك افتحه باستخدام الجذر أو مع sudo. </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /root/.ssh/authorized_keys </pre><p>في بداية سطر المفتاح الذي نسخته، أضف <span style="font-family:courier new,courier,monospace;">=command</span> لكي تُعرّف الأمر الذي يصلح له المفتاح. يجب أن يتضمن مسار الملف القابل للتنفيذ مع أي معامل:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint"> command="/path/to/command arg1 arg2" ssh-rsa  </pre><p>احفظ وأغلق الملفّ عندما تنتهي.</p><p>افتح ملفّ <span style="font-family:courier new,courier,monospace;">sshd_config</span> باستخدام الجذر أو مع sudo:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/ssh/sshd_config </pre><p>ابحث عن <span style="font-family:courier new,courier,monospace;">PermitRootLogin</span> وغيّر القيمة إلى <span style="font-family:courier new,courier,monospace;">forced-commands-only.</span>هذه العمليّة ستسمح للمفاتيح باستخدام الجذر فقط عند تحديد أمر للمفتاح:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">PermitRootLogin forced-commands-only</pre><p>احفظ الملف وأغلق الملف وأعد تشغيل SSH لتطبيق التّغييرات. <span style="line-height: 22.3999996185303px;">على أبنتو/دبيان:</span><span style="line-height: 22.3999996185303px;"> </span><span style="line-height: 22.3999996185303px; font-family: 'courier new', courier, monospace;">sudo service ssh restart</span><span style="line-height: 22.3999996185303px;"> على فيدورا/سنت أو إس:</span><span style="line-height: 22.3999996185303px;"> </span><span style="line-height: 22.3999996185303px; font-family: 'courier new', courier, monospace;">sudo service sshd restart</span></p><h3 id="-x-">إحالة تطبيق X لعرضه للعميل</h3><p>يُمكن ضبط SSH لإحالة تطبيقات X وعرضها على الجهاز المحلي تلقائيّاً. لينجح الأمر يجب على العميل امتلاك مدير نوافذ X مضبوط ومتاح. لاتاحة هذه الوظيفة ادخل إلى الخادوم البعيد وعدّل ملفّ <span style="font-family:courier new,courier,monospace;">sshd_config</span> باستخدام حساب الجذر أو مع sudo:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/ssh/sshd_config </pre><p>ابحث عن <span style="font-family:courier new,courier,monospace;">X11Forwarding</span> إذا كانت تعليقا أزل رمز التعليق ومرّر القيمة yes:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">X11Forwarding yes </pre><p>احفظ الملف وأغلق الملف وأعد تشغيل SSH لتطبيق التّغييرات. <span style="line-height: 22.3999996185303px;">على أبنتو/دبيان:</span><span style="line-height: 22.3999996185303px;"> </span><span style="line-height: 22.3999996185303px; font-family: 'courier new', courier, monospace;">sudo service ssh restart</span><span style="line-height: 22.3999996185303px;"> على فيدورا/سنت أو إس:</span><span style="line-height: 22.3999996185303px;"> </span><span style="line-height: 22.3999996185303px; font-family: 'courier new', courier, monospace;">sudo service sshd restart</span></p><p>للاتّصال بالخادوم وإحالة عرض تطبيق ما، يجب عليك تمرير مُعامل <span style="font-family:courier new,courier,monospace;">X-</span> من جهة العميل عند الاتصال: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh -X username@remote_host </pre><p>التطبيقات الرسوميّة المفتوحة على الخادوم في الجلسة الحاليّة يجبُ أن تُعرض على الجهاز المحلي. يُمكن أن يكون الأداء بطيئا قليلاً، لكنّه جيد ومجدي في بعض الحالات.</p><h2 id="-">خيارات إعدادات جهة العميل</h2><p>في هذا القسم، سنركّز على بعض التعديلات التي يُمكنك القيّام بها على جهة العميل من الاتّصال.</p><h3 id="-">تحديد خصائص معلومات الاتّصال بالخادوم</h3><p>يُمكنك تحديد إعدادات على جهازك المحلي لبعض أو لجميع الخوادم التي تتصل بها. ويُمكن تخزينُ هذه الإعدادات على ملفّ <span style="font-family:courier new,courier,monospace;">ssh/config./~</span> والذي يُمكن قراءته من طرف عميل SSH في كل مرة يُستدعى فيها. أنشئ أو افتح الملفّ بمحرّر نصوص على جهازك المحليّ:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">nano ~/.ssh/config </pre><p>يُمكنك تحديد الإعدادات التي ترغب فيها بداخل هذا الملف بتقديم كل منها مع كلمة Host متبوعة بكنية (alias). وتحت السّطر يُمكنك تحديد أي من التّعليمات الموجودة على صفحة<span style="font-family:courier new,courier,monospace;"> man ssh_config</span> بشرط أن تكون بمسافة بادئة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">man ssh_config </pre><p>كمثال عن الإعدادات: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Host testhost HostName example.com Port 4444 User demo </pre><p>يُمكنك بعد ذلك الاتّصال ب <span style="font-family:courier new,courier,monospace;">example.com</span> على المنفذ <span style="font-family:courier new,courier,monospace;">4444</span> باستخدام اسم المُستخدم “demo” بكتابة: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh testhost</pre><p>يُمكنك أيضاً استخدام حروف البدل (wildcards) لموافقة أكثر من مُضيف. تذكّر أن الموافقات اللاحقة يُمكنها الكتابة فوق السّابقة، لذلك يجب عليك أن تضع الموافقات العامّة في الأعلى. على سبيل المثال، يمكنك أن تعطل إحالة <span style="font-family:courier new,courier,monospace;">X</span> بشكل افتراضي لجميع الاتصالات، بوضع التالي في ملفّك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Host * ForwardX11 no
<span style="line-height: 22.3999996185303px;">Host testhost HostName example.com ForwardX11 yes Port 4444 User demo</span>
</pre><p> احفظ وأغلق الملفّ عندما تنتهي.</p><h3 id="-timeout-">إبقاء الاتّصالات حيّة لتجنّب نفاذ الوقت (Timeout)</h3><p>إذا وجدت نفسك خارج جلسة SSH قبل أن تكون جاهزا لذلك، من المُحتمل أنّ وقت الاتّصال ينفذ. يُمكنك ضبط العميل لإرسال حزمة إلى الخادوم بين الحين والآخر لتجنّب هذه المسألة: يُمكنك ضبط هذا على جهازك المحليّ لكل اتّصال بتعديل ملفّ <span style="font-family:courier new,courier,monospace;">ssh/config./~</span>. افتح الآن:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">nano ~/.ssh/config </pre><p>إذا لم تملك سطرا يوافق جميع المضيفين أعلى الملفّ فقم بإضافته. ثم أضف <span style="font-family:courier new,courier,monospace;">ServerAliveInterval</span> بقيمة "120” لإرسال حزمة إلى الخادوم كلّ دقيقتين. هذا كافٍ لإبلاغ الخادوم بعدم إغلاق الاتّصال: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Host * ServerAliveInterval 120 </pre><p>احفظ وأغلق الملفّ عندما تنتهي.</p><h3 id="-">تعطيل التحقق من المضيف</h3><p>في الحالة الافتراضية، كلّما اتّصلتَ بخادومٍ جديد، ستُعرضُ لك بصمة مفتاح:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">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 </pre><p>هذا الأمر مضبوط لكي تتأكد من الفحص المُضيف الذي تُحاول الاتّصال به وتجنب إمكانية أن يتنكر مستخدم خبيث في هيئة المُضيف البعيد. قد ترغب في تعطيل هذه الميزة في بعض الحالات.</p><p><strong>ملاحظة:</strong> هذا الأمر يمكن أن يكون خطيرا جدّا أمنيا، لذلك تأكد من أنك تعرف ما تفعله إذا قُمت بضبط النظام هكذا.</p><p> للقيّام بالأمر، افتح ملفّ <span style="font-family: 'courier new', courier, monospace; line-height: 22.3999996185303px;">ssh/config./~</span> على جهازك المحليّ:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">nano ~/.ssh/config </pre><p>إذا لم تملك سطرا يوافق جميع المضيفين أعلى الملفّ فقم بإضافته. ثم أضف <span style="font-family:courier new,courier,monospace;">StrictHostKeyChecking</span> بقيمة no لإضافة مضيفين جدد تلقائيّا إلى ملفّ<span style="font-family:courier new,courier,monospace;"> known_hosts</span>،  وأضف <span style="font-family:courier new,courier,monospace;">UserKnownHostsFile</span> بقيمة /dev/null/ لعدم التحذير على مُضيف جديد أو مُضيف معدّل: </p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Host StrictHostKeyChecking no UserKnownHostsFile /dev/null</pre><p>يُمكنك تشغيل التحقق لكل حالة على حدة بعكس هذه الخيّارات لمضيفين آخرين. القيمة الافتراضية ل <span style="font-family:courier new,courier,monospace;">StrictHostKeyChecking</span> هي "ask”:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Host testhost HostName example.com StrictHostKeyChecking ask UserKnownHostsFile /home/demo/.ssh/known_hosts</pre><h3 id="-ssh-tcp-">مضاعفة SSH خلال اتصال TCP واحد</h3><p>هناك بعض الحالات التي يُمكن أن يأخذ فيها إنشاء اتّصال TCP وقتا أطول من المعتاد. إذا كنت تقوم باتّصالات متعدّدة إلى نفس الجهاز، يُمكنك استغلال ميّزة المُضاعفة. مُضاعفة SSH تقوم بإعادة استخدام نفس اتّصال TCP لجلسات SSH مُتعدّدة. وبهذا يتجنّب بعض العمل الضروري لإنشاء جلسة جديدة الشيء الذي يسرع الأمر، الحد من عدد الاتّصالات قد يكون مُجديّا أيضا لأسباب أخرى. </p><p>لإعداد المُضاعفة، يُمكنك إعداد الاتّصالات، أو يُمكنك ضبط العميل لاستعمال المُضاعفة عندما تكون متاحة. سنشرح الخيار الثاني هنا. لإعداد المُضاعفة، عدّل ملف إعدادات عميل SSH على الحاسوب المحلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">nano ~/.ssh/config </pre><p>إذا لم تملك سطرا يوافق جميع المضيفين أعلى الملفّ فقم بإضافته الآن (مثل Host *). سنضبط القيم <span style="font-family:courier new,courier,monospace;">ControlMaster</span> , <span style="font-family:courier new,courier,monospace;">ControlPath</span> و <span style="font-family:courier new,courier,monospace;">ControlPersist</span> لإنشاء إعدادات المُضاعفة. يجب أن يكون <span style="font-family:courier new,courier,monospace;">ControlMaster</span> بقيمة <span style="font-family:courier new,courier,monospace;">auto</span> لتخويل المُضاعفة تلقائيّا عندما تكون متاحة. <span style="font-family:courier new,courier,monospace;">ControlPath</span> سيكون مسار تحكم المقبس. الجلسة الأولى ستنشئ هذا المقبس وستكون الجلسات اللاحقة قادرة على إيجاده لأنه موسوم من طرف المُستخدم، المُضيف والمنفذ.</p><p>ضبط خيّار <span style="font-family:courier new,courier,monospace;">ControlPersist</span> مع القيمة <span style="font-family:courier new,courier,monospace;">1</span> ستُخوّلُ اتّصال الرئيس الأولي( initial master) ليعمل في الخلفية. 1 تعني أن اتّصال TCP يجب أن ينتهي بعد ثانية واحدة من إغلاق آخر جلسة SSH:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Host * ControlMaster auto ControlPath ~/.ssh/multiplex/%r@%h:%p ControlPersist 1</pre><p>احفظ وأغلق الملفّ عندما تنتهي. نحتاج الآن لإنشاء المجلّد الذي حدّدناه في مسار التحكم:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">mkdir ~/.ssh/multiplex</pre><p>أي جلسة تُنشئ الآن مع نفس الجهاز ستُحاول استعمال المقبس الموجود واتّصال TCP. عندما تكون آخر جلسة موجودة، سيُهدمُ الاتّصال بعد ثانيّة واحدة. إذا كنت تريد تجنب إعدادات المُضاعفة لسبب ما مؤقتا، يُمكنك فعلُ ذلك بتمرير مُعامل <span style="font-family:courier new,courier,monospace;">S-</span> مع قيمة <span style="font-family:courier new,courier,monospace;">none</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh -S none username@remote_host
</pre><p>تحدثنا في هذا الدرس عن كيفية إنشاء إتصال بخادوم بعيد بشكل آمن وبخيارات متعددة سواءً من جهة الخادوم أو من جهة العميل (المستخدم)، سنتحدث في المقال القادم إن شاء الله عن أنفاق ssh، ماهيتها، وكيفية إعدادها.</p><p>ترجمة -مع شيءٍ من التصرّف- للقسم الثاني من مقال: <a rel="external nofollow" target="_blank" href="https://www.digitalocean.com/community/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys">SSH Essentials: Working with SSH Servers, Clients, and Keys</a>.</p><p>حقوق الصورة البارزة: <a rel="external nofollow" href="http://www.freepik.com/free-vector/vector-security-shield-template_715019.htm">Designed by Freepik</a>.</p>
]]></description><guid isPermaLink="false">74</guid><pubDate>Fri, 19 Jun 2015 12:14:08 +0000</pubDate></item><item><title>&#x636;&#x628;&#x637; &#x625;&#x639;&#x62F;&#x627;&#x62F;&#x627;&#x62A; &#x62E;&#x62F;&#x645;&#x629; SSH &#x639;&#x644;&#x649; &#x62E;&#x627;&#x62F;&#x648;&#x645; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/security/ssh/%D8%B6%D8%A8%D8%B7-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%AE%D8%AF%D9%85%D8%A9-ssh-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r93/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_08/ssh-config.png.0df0f36be926f3b6d5f29c2bff4dba54.png" /></p>

<div id="wmd-preview-section-42"><p>SSH هو الطريقة الأساسية للاتصال بخواديم لينكس والأنظمة الشبيهة بيونكس عبر سطر الأوامر. يوفّر لك هذا اتصالًا آمنًا يمكنك استخدامها لتطبيق الأوامر، التفاعل مع النظام أو حتّى توجيه التدفّق (traffic) عبره.</p><p style="text-align: center;"><a href="https://academy.hsoub.com/uploads/monthly_2015_08/ssh-config.png.7678634cdb63e348b80850998aa4a938.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="3672" src="https://academy.hsoub.com/uploads/monthly_2015_08/ssh-config.thumb.png.d014ce68511d0df7c52b7e573df9b1ea.png" class="ipsImage ipsImage_thumbnailed" alt="ssh-config.thumb.png.d014ce68511d0df7c52"></a></p><p>معظم المستخدمين يدركون <a href="https://academy.hsoub.com/search/?tags=%D9%85%D8%AF%D8%AE%D9%84+%D8%A5%D9%84%D9%89+ssh">أساسيات البدء وكيفية الاتصال بخادومٍ بعيد</a> عبر أمرٍ شبيه بـ:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">ssh username@remote_server</pre><p>لكن، هناك المزيد من الخيارات المفيدة التي يمكنك استخدامها مع عفريت SSH Daemon) SSH) لتحسين الأمان، إدارة اتصالات المستخدمين.. إلخ. سنشرح بعض هذه الخيارات التي تعطيك تحكّمًا أكبر باتصال SSH الخاصّ بك.</p><p>سنقوم بتوضيح هذه الأمور على خادوم Ubuntu 12.04، ولكن الأمور نفسها تنطبق على أيّ توزيعة لينكس حديثة.</p></div><div id="wmd-preview-section-43"><h2 id="تصفح-ملف-إعداد-sshd">تصفح ملف إعداد SSHD</h2><p>المصدر الرئيسي لإعدادات عفريت SSH هو بالملف <span style="font-family:courier new,courier,monospace;">etc/ssh/sshd_config/</span>. لاحظ أنّ هذا الملف مختلفٌ عن ملف <span style="font-family:courier new,courier,monospace;">ssh_config</span>، والذي يقوم بضبط إعدادات SSH لأجهزة العملاء فقط (clients).</p><p>افتح الملف بصلاحياتٍ إدارية عبر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sudo nano /etc/ssh/sshd_config</pre><p>سترى ملفًّا مفتوحًا مع بعض خيارات، ولحسن الحظ، فسترى بعض التعليقات كذلك (اعتمادًا على توزيعة لينكس الخاصّة بك). صحيحٌ أنّ معظم توزيعات لينكس تستخدم إعدادات افتراضية جيّدة، ولكن هناك مساحة موجودة كذلك لعمل بعض التخصيص والتحسين.</p><p>فلنستعرض بعض الخيارات التي تمّ ضبطها بالفعل بملفّنا على Ubuntu 12.04:</p></div><div id="wmd-preview-section-44"><h3 id="المنافذ-والبروتوكولات">المنافذ والبروتوكولات</h3><ul><li><strong>Port 22</strong>: يقوم هذا السطر بتحديد المنفذ الذي سيعمل عليه عفريت SSH. افتراضيًا، تعمل معظم الخواديم وأجهزة العملاء على المنفذ 22، ولكن تغيير هذا المنفذ إلى منفذٍ آخر قد يساعد من تقليل محاولات تسجيل الدخول الفاشلة عبر SSH بواسطة المُخترقين.</li><li><strong>Protocol 2</strong>: تمّ تطوير SSH عبر بروتوكولين مختلفين اثنين. باستثناء ما إذا كنتَ تحتاج إلى دعم أجهزة العملاء التي تعمل فقط على البروتوكول 1، فمن المستحسن أن تترك هذا السطر على ما هو عليه.</li></ul></div><div id="wmd-preview-section-45"><h3 id="المفاتيح-والعزل">المفاتيح والعزل</h3><ul><li><strong>HostKey /etc/ssh/sshhost…</strong>: تقوم هذه السطور بتحديد مفاتيح المستضيف الخاصّة بالخادوم. يتم استخدام هذه المفاتيح للتعرّف على الخادوم للاتصال بأجهزة العملاء. إذا كان جهاز عميلٍ ما قد اتصل من قبل بالخادوم في الماضي، فيمكنه استخدام هذا المفتاح للتحقق من الاتصال الجديد.</li><li><strong>UsePrivilegeSeparation yes</strong>: يسمح هذا الخيار لـSSH بإنشاء عملياتٍ فرعية تمتلك الصلاحيات اللازمة فقط لآداء مهامّها. هذه الميّزة هي ميّزة أمان يتم استخدامها لعزل العمليات الفرعية في حصول اختراقٍ أمني.</li><li><strong>KeyRegenerationInterval</strong> و <strong>ServerKeyBits</strong>: تقوم هذه الخيارات بالتأثير على مفتاح الخادوم الذي يتم إنشاؤه للبروتوكول 1. لا يجب عليك أن تولي اهتمامًا لهذا طالما أنّك لا تزال تستخدم البروتوكول 2.</li></ul></div><div id="wmd-preview-section-46"><h3 id="التسجيل-والتقييدات">التسجيل والتقييدات</h3><ul><li><strong>SyslogFacility</strong> و <strong>LogLevel</strong>: تحدد هذه الخيارات كيف سيتم تسجيل النشاط. الخيار الأول هو لتسجيل الرسائل، والخيار الثاني يحدد "درجة التسجيل" أو التفاصيل التي يجب أن يتم تسجيلها بملفّات السجل.</li><li><strong>LoginGraceTime 120</strong>: يحدد هذا الخيار عدد الثواني التي يجب على الخادوم أن ينتظرها قبل أن يقوم بقطع الاتصال عن جهازٍ عميل في حال لم يكن هناك عملية تسجيل دخول ناجحة.</li><li><strong>PermitRootLogin yes</strong>: يسمح هذا الخيار أو يمنع من استخدام SSH لتسجيل الدخول إلى المستخدم الجذر عبر اتصالٍ بعيد. بما أنّ المستخدم الجذر هو مستخدمٌ يعرف المهاجمون أنّه حتمًا موجود على الخادوم، وبما أنّه يمتلك كامل الصلاحيات كذلك، فهو هدفٌ معرّض بشدة للهجمات. لذا فإنّ تغيير هذا الخيار إلى "no" سيكون جيّدا بعد أن تضبط مستخدمًا عاديًا بصلاحيات الإدارة.</li><li><strong>StrictModes yes</strong>: هذا السطر يمنع استخدام أيّ ملفّات إعداد تابعة لـSSH في حال كانت غير مضبوطة على الصلاحيات الصحيحة. مثلًا، إذا كانت ملفّات الإعداد قابلة للكتابة من قبل الجميع، فإنّ هذا الأمر يعتبر خطرًا، ويجب عدم استخدام تلك الملفّات إلى حين إصلاح المشكلة.</li><li><strong>IgnoreRhosts</strong> و <strong>RhostsRSAAuthentication</strong>: تحدد هذه السطور نمط استيثاق rhost الذي سيتم استخدامه. هذه السطور مصممة للبروتوكول 1 ولا تنطبق على البروتوكول 2.</li><li><strong>HostbasedAuthentication no</strong>: هذا هو إصدار البروتوكول 2 من الخيارين السابقين. يسمح لك هذا الخيار بشكلٍ أساسي بقبول عمليات الاستيثاق بناءً على المستضيف الخاصّ بأجهزة العملاء. عادةً يكون هذا الخيار مقبولًا فقط بالبيئات المعزولة، لأنّه يمكن أن يتم عبره محاكاة معلومات المصدر. يمكنك تحديد معلومات المستضيف التي يجب السماح لها بالملف <span style="font-family:courier new,courier,monospace;">etc/ssh/shosts.equiv/</span> أو الملف <span style="font-family:courier new,courier,monospace;">etc/hosts.equiv/</span>، ولن نتحدّث عن هذا الأمر حاليًا.</li><li><strong>PermitEmptyPasswords no</strong>: يقوم هذا الخيار بمنع الوصول عبر SSH إلى حسابات المستخدمين التي لا تمتلك كلمة مرور (وهي كثيرة!)، وهذا أمرٌ خطير ولا يجب عليك تغيير حالته بتاتًا.</li><li><strong>ChallengeResponseAuthentication</strong>: يقوم هذا السطر بتفعيل أو تعطيل الاستياق عبر "التحدّي" حيث يمكن ضبطه باستخدام PAM، وهو خارج نطاق درسنا هذا حاليًا.</li></ul></div><div id="wmd-preview-section-47"><h3 id="العرض">العرض</h3><ul><li><strong>X11Forwarding yes</strong>: يسمح لك هذا بإعادة توجيه واجهة X11 الرسومية الخاصّة بالتطبيقات على الخادوم إلى أجهزة العملاء. هذا يعني أنّه يمكنك تشغيل برنامجٍ رسومي على الخادوم والتفاعل معه من على جهاز العميل. يجب على جهاز العميل أن يمتلك نظام النوافذ X مثبّتًا. يمكنك تثبيت وضبط هذه الأمور على OS X، كما أنّ جميع توزيعات لينكس ستحتوي على هذه الأشياء كذلك.</li><li><strong>X11DisplayOffset 10</strong>: هذا الخيار هو عبارة عن "إزاحة" لرقم عرض sshd لتوجيه X11. تسمح هذه الإزاحة لنوافذ X11 المفتوحة عبر بروتوكول SSH بأن تتفادى التشابك مع خادوم العرض X المحلّي.</li><li><strong>PrintMotd no</strong>: يقوم هذا السطر بجعل عفريت SSH لا يقوم بقراءة وعرض رسالة اليوم. أحيانًا يتم قراءة هذه الرسالة بواسطة الصدفة نفسها، لذا ربما تحتاج إلى تعديل إعدادات الصدفة الخاصّة بك كذلك.</li><li><strong>PrintLastLog yes</strong>: يقوم هذا الخيار بإخبار عفريت SSH بأن يطبع معلوماتٍ عامّة عن آخر عملية تسجيل دخول قمتَ بها.</li></ul></div><div id="wmd-preview-section-48"><h3 id="الاتصال-والبيئة">الاتصال والبيئة</h3><ul><li><strong>TCPKeepAlive yes</strong>: يحدد هذا السطر ما إذا كان يجب إرسال رسائل الإبقاء على قيد الحياة لبروتوكول TCP إلى جهاز العميل. يمكن لهذا الأمر أن يساعد الخادوم على اكتشاف المشاكل وأن يُعلمه متى سيتم إغلاق الاتصال. إذا كان هذا الخيار معطلًا، فإنّه لن يتم إغلاق الاتصالات عندما يكون هناك عدد قليل من المشاكل مع الشبكة، وهو ما يمكن أن يكون أمرًا جيّدًا، ولكنّه أيضًا يعني أنّ المستخدمين سيكونون قادرين على إلغاء الاتصال ومتابعة حجز مساحة من موارد الخادوم.</li><li><strong>AcceptEnv LANG LC_*</strong>: يسمح لك هذا الخيار بقبول متغيّرات بيئة معيّنة من جهاز العميل. في هذه السطر بالتحديد، سينقوم بقبول متغيرات اللغة، والذي يمكنه أن يساعد جلسة الصدفة على طباعة الرسائل بشكلٍ مخصص لجهاز العميل.</li><li><strong>Subsystem sftp /usr/lib/openssh/sftp-server</strong>: يقوم هذا الخيار بإعداد أنظمة فرعية خارجية يمكن استخدامها مع SSH. وبمثالنا هذا، فإنّه يتم تحديد خادوم STFP والمسار المؤدّي إلى تشغيله.</li><li><strong>UsePAM yes</strong>: يقوم هذا الخيار بتحديد ما إذا كان يجب توفير PAM (وحدات الاستيثاق القابلة للإضافة) للمستخدمين الذين تمّ التحقق منهم بالفعل.</li></ul><p>ما سبق هو أهمّ الخيارات الافتراضية المفعّلة على خادومنا العامل بـUbuntu 12.04. الآن، سنتحدّث عن بعض الخيارات الأخرى التي يمكن أن تكون مساعدةً لك لتضبطها أو تعدّلها.</p></div><div id="wmd-preview-section-49"><h2 id="خيارات-sshd-أخرى">خيارات SSHD أخرى</h2><p>هناك المزيد من الخيارات التي يمكننا ضبطها لعفريت SSH الخاصّ بنا. بعض هذه الخيارات قد يكون مفيدًا لك وبعضها الآخر قد لا يكون مفيدًا إلّا في حالات معيّنة. لن نتحدّث عن جميع الخيارات هنا بل فقط المهم منها.</p></div><div id="wmd-preview-section-50"><h3 id="ترشيح-المستخدمين-والمجموعات">ترشيح المستخدمين والمجموعات</h3><p>تسمح لك بعض الخيارات بالتحكّم بشكلٍ دقيق بالمستخدمين الذين تريد السماح لهم فقط بالولوج عبر SSH. تعتبر هذه الخيارات خياراتٍ حصرية; كمثال، يسمح الخيار <span style="font-family:courier new,courier,monospace;">AllowUsers</span> لمستخدمين معيّنين فقط بتسجيل الدخول بينما يمنع كلّ المستخدمين الآخرين.</p><ul><li><strong>AllowGroups</strong>: يسمح لك هذا الخيار بتحديد أسماء المجموعات الموجودة على الخادوم. سيمتلك المستخدمون الأعضاء في واحدةٍ أو أكثر من هذه المجموعات حقّ الوصول إلى الخادوم فقط.</li><li><strong>AllowUsers</strong>: هذا الخيار شبيه بما سبق، ولكنّه يحدد المستخدمين المخوّلين فقط بالولوج. لن يتمكّن أيّ مستخدم غير مدرج على هذه القائمة من تسجيل الدخول عبر SSH. يمكنك اعتبار هذا الخيار كقائمةٍ بيضاء لأسماء المستخدمين المخوّلين للولوج.</li><li><strong>DenyGroups</strong>: يقوم هذا الخيار بعمل قائمة سوداء للمجموعات الغير مخوّلة بتسجيل الدخول، أيّ مستخدم عضو في واحدٍ من هذه المجموعات لن يمتلك حقّ الوصول إلى الخادوم عبر SSH.</li><li><strong>DenyUsers</strong>: وكالسابق، يقوم هذا الخيار بإنشاء قائمة سوداء للمستخدمين الممنوعين من تسجيل الدخول عبر SSH.</li></ul><p>بالإضافة إلى ما سبق، هناك بعض الخيارات التي تمكّنك من فرض المزيد من التقييدات. يمكن أن يتم استخدامها بالتوازي مع الخيارات السابقة.</p><ul><li><strong>Match</strong>: يسمح هذا الخيار بالمزيد من التحكّم على المستخدمين القادرين على الاستيثاق تحت شروطٍ معيّنة. يحدد هذا الخيار كذلك مجموعةً مختلفة من الخيارات يمكن استخدامها عندما تتم عملية اتصال مستخدم معيّن أو مستخدمٍ ضمن مجموعة معيّنة. سنناقش هذا بالتفصيل لاحقًا.</li><li><strong>RevokedKeys</strong>: يسمح لك هذا الخيار بتحديد المفاتيح العمومية المُلغاة. سيقوم هذا بمنع المفاتيح المحددة من أن يتم استخدامها لتسجيل الدخول إلى النظام.</li></ul></div><div id="wmd-preview-section-51"><h3 id="خيارات-منوعة">خيارات منوعة</h3><p>هناك بعض الخيارات التي يمكنك استخدامها كذلك لإعداد التدفّق (traffic) عبر عفريت SSH، ومن بينها:</p><ul><li><strong>AddressFamily</strong>: يحدد هذا الخيار نوع العناوين التي سيتم قبول الاتصالات منها. افتراضيًا، فإنّ الخيار مضبوط ليقبل جميع العناوين، ولكن يمكنك تغييره إلى "inet" لتجعله يقبل عناوين IPv4 فقط، أو "inet6" لعناوين IPv6.</li><li><strong>ListenAddress</strong>: يسمح لك هذا الخيار بأن تخبر عفريت SSH بأن يعمل على منفذٍ وعنوانٍ محددين. افتراضيًا، يعمل العفريت على جميع العناوين الموجودة على الآلة.</li></ul><p>الخيارات الأخرى المتوفّرة تشمل تلك التي يتم استخدامها لإعداد <a rel="external nofollow" href="https://www.digitalocean.com/community/articles/how-to-create-an-ssh-ca-to-validate-hosts-and-clients-with-ubuntu">الاستيثاق عبر الشهادات</a>، خيارات تقييد الاتصال مثل ClientAliveCountMax و ClientAliveInterval، بالإضافة إلى خيارات مثل ChrootDirectory، والذي يمكن استخدامها لقفل تسجيل دخول مستخدمٍ معيّن إلى مسارٍ محدد مضبوط مسبقًا.</p></div><div id="wmd-preview-section-52"><h2 id="تقييد-تسجيل-دخول-المستخدمين">تقييد تسجيل دخول المستخدمين</h2><p>ذكرنا أعلاه بعض الأدوات التي يمكنك استخدامها لتقييد دخول المستخدمين والمجموعات، فلنشرح بعضًا منها هنا بالقليل من التفصيل.</p><p>الصيغة الأساسية لاستخدام هذه الأدوات هي كالتالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">AllowUsers demouser fakeuser madeupuser</pre><p>كما يمكنك أن ترى، يمكننا تحديد أكثر من مستخدم مفصولين بمسافة ليتم تطبيق الأمر عليهم.</p><p>يمكننا أيضًا استخدام إشارات النفي لتطبيق قواعد معيّنة. مثلًا، إذا أردنا السماح للجميع بالولوج فيما عدا المستخدم "hanny"، فيمكننا تطبيق شيءٍ كـ:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">AllowUsers * !hanny</pre><p>يمكننا أن نعبّر عن المثال السابق مع الخيار DenyUsers كالشكل التالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">DenyUsers hanny</pre><p>يمكننا أيضًا استخدام محراف؟ لمطابقة حرفٍ واحد بالضبط. مثلًا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">AllowUsers ?im</pre><p>الخيار السابق سيقوم بالسماح لجميع المستخدمين الذين يتكوّن اسمهم من 3 حروف، وينتهي اسمهم بـim، مثل "jim" ،"tim" ،"vim".</p><p>يمكننا أن نكون أكثر تحديدًا كذلك، يمكننا استخدام الشكل user@hostname بهدف تقييد تسجيل الدخول إلى موقعٍ معيّن فقط من قبل أجهزة العملاء، كمثال، يمكنك كتابة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">AllowUsers demouser@host1.com fakeuser</pre><p>سيقوم هذا الخيار بالسماح للمستخدم fakeuser بتسجيل الدخول من أيّ مكان، بينما لن يسمح للمستخدم demouser بأن يقوم بتسجيل الدخول إلّا من مستضيف يدعى host1.com.</p><p>يمكننا كذلك تقييد عمليات تسجيل الدخول بناءً على اسم المستضيف من خارج ملفّ <span style="font-family:courier new,courier,monospace;">sshd_config</span> عبر أغلفة TCP Wrappers. يمكن القيام بهذا عبر الملفّين <span style="font-family:courier new,courier,monospace;">etc/hosts.allow/</span> و <span style="font-family:courier new,courier,monospace;">etc/hosts.deny/</span>.</p><p>كمثال، يمكننا تقييد الوصول عبر SSH بناءً على اسم مستضيفٍ معيّن عبر إضافة السطر التالي إلى ملفّ <span style="font-family:courier new,courier,monospace;">hosts.allow</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sshd: .example.com</pre><p>وبافتراض أننا نمتلك السطر التالي كذلك في ملفّ<span style="font-family:courier new,courier,monospace;"> hosts.deny</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">sshd: all</pre><p>فإنّه سيتم السماح بعمليات تسجيل الدخول عبر SSH فقط من الاتصالات القادمة من example.com أو من واحدٍ من نطاقاته الفرعية.</p></div><div id="wmd-preview-section-53"><h2 id="استخدام-خيارات-match-لإضافة-الاستثناءات">استخدام خيارات Match لإضافة الاستثناءات</h2><p>يمكننا التحكّم بخياراتنا بشكلٍ أكبر عبر استخدام خيارات "match". تعمل خيارات Match عبر تحديد نمطٍ معيّن ليكون الفيصل فيما إذا كان خيارٌ ما سيتم تطبيقه أم لا.</p><p>نبدأ عبر كتابة الخيار Match ومن ثم نقوم بتحديد مجموعة من قيم المفاتيح التي نريد تطبيقها، المفاتيح الموجودة هي "User", "Group", "Host", و "Address". يمكننا الفصل فيما بين كلّ مُدخَلة بمسافة وفصل كلّ نمط (user1, user2) بفاصلة. يمكننا كذلك تطبيق إشارات الاستبعاد (!) مثلًا إن أردنا:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Match User !demouser,!fakeuser Group sshusers Host *.example.com</pre><p>يقوم السطر السابق بالمطابقة فقط في حال كان المستخدم ليس demouser أو fakeuser، وكان المستخدم عضوًا في مجموعة sshusers، وكان المستخدم يتصل من مستضيف بعنوان example.com ، إذا تحققت كلّ الشروط السابقة فحينها فقط يتم إرجاع المطابقة بنجاح.</p><p>يمكن للمعيار “Address” أن يستخدم <a rel="external nofollow" href="https://www.digitalocean.com/community/articles/understanding-ip-addresses-subnets-and-cidr-notation-for-networking">مجموعة رموز CIDR netmask</a>.</p><p>الخيار الذي يتبع السطر Match سوف يتم تطبيقه فورًا في حال ما إذا تمّت المطابقة بنجاح. مدى هذه المطابقات الشرطية هو إلى نهاية ملفّ الإعدادات أو إلى بداية المطابقة الشرطية التالية. بسبب هذا، من المنصوح أن تقوم بوضع إعداداتك ومتغيّراتك الافتراضية في بداية الملفّ وأن تضع الاستثناءات في نهايته.</p><p>بسبب هذه الجمل الشرطية، الخيار الذي يكون تحت جملة match غالبًا ما يتم إزاحته إلى اليمين قليلًا ليشير إلى أنّه تابعٌ لجملة match الشرطية. كمثال، يمكن للشرط أعلاه أن يبدو عند التطبيق كالتالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">Match User !demouser,!fakeuser Group sshusers Host *.example.com AuthorizedKeysFile /sshusers/keys/%u PasswordAuthentication yes X11Forwarding X11DisplayOffset 15</pre><p>تمتلك الوصول إلى مجموعة صغيرة من الخيارات فقط عندما تتعامل مع تقييدات الخيار match. للحصول على قائمةً كاملة، يمكنك مراجعة صفحة man الخاصّة بـ<span style="font-family:courier new,courier,monospace;">sshd_config</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">man sshd_config</pre><p>ابحث عن قسم "Match" لترى قائمة كاملة بالمتغيّرات المتوفّرة.</p></div><div id="wmd-preview-section-54"><h2 id="الخاتمة">الخاتمة</h2><p>كما ترى، يمكنك ضبط العديد من المتغيّرات الخاصّة بـSSH من طرف الخادوم والتي ستؤثّر على الطريقة التي يقوم المستخدمون من خلالها بتسجيل الدخول. تأكّد من اختبار تغييراتك بحذر قبل أن تقوم بتطبيقها بشكلٍ كامل على كامل الخادوم لتجنّب أيّ إعدادات خاطئة ومشاكل قد تحصل.</p><p>تعلّم أساسيات إعداد ملفّ <span style="font-family:courier new,courier,monospace;">etc/ssh/sshd_conf/</span> هو خطوة ممتازة نحو فهم كيفية التحكّم بحذر بالوصول إلى خادومك، إنّها مهارةٌ ضرورية لأيّ مدير نظام لينكس.</p><p>ترجمة -وبتصرف- للمقال <a rel="external nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-tune-your-ssh-daemon-configuration-on-a-linux-vps">How To Tune your SSH Daemon Configuration on a Linux VPS</a> لصاحبه Justin Ellingwood.</p></div>
]]></description><guid isPermaLink="false">93</guid><pubDate>Sat, 01 Aug 2015 14:58:22 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641; &#x62A;&#x633;&#x62A;&#x62E;&#x62F;&#x645; &#x627;&#x644;&#x637;&#x631;&#x642; &#x639;&#x644;&#x649; &#x627;&#x644;&#x645;&#x646;&#x627;&#x641;&#x630; &#x644;&#x625;&#x62E;&#x641;&#x627;&#x621; &#x62E;&#x62F;&#x645;&#x629; SSH &#x639;&#x644;&#x649; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648; &#x639;&#x646; &#x627;&#x644;&#x645;&#x647;&#x627;&#x62C;&#x645;&#x64A;&#x646;</title><link>https://academy.hsoub.com/devops/security/ssh/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%A7%D9%84%D8%B7%D8%B1%D9%82-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%85%D9%86%D8%A7%D9%81%D8%B0-%D9%84%D8%A5%D8%AE%D9%81%D8%A7%D8%A1-%D8%AE%D8%AF%D9%85%D8%A9-ssh-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D8%B9%D9%86-%D8%A7%D9%84%D9%85%D9%87%D8%A7%D8%AC%D9%85%D9%8A%D9%86-r87/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_07/ssh-port-knocking.png.d85070345cb6f89a579215babbb3bd0b.png" /></p>

<p id="مقدمة">يعد توفير الخدمات وإتاحة التطبيقات والموارد للمستخدمين الأهداف الأساسية لتجهيز الخواديم وإعدادها؛ إلا أن أي خادوم موصول بشبكة الإنترنت سيتعرض لا محالة لمستخدمين سيئي النيات يأملون استغلال الثغرات الأمنية للحصول على صلاحيات الدخول.</p><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_07/ssh-port-knocking.png.c8ba45f06218f69c4b1e289537220677.png"><img data-fileid="3381" class="ipsImage ipsImage_thumbnailed" alt="ssh-port-knocking.thumb.png.32d352296c57" src="https://academy.hsoub.com/uploads/monthly_2015_07/ssh-port-knocking.thumb.png.32d352296c577172c2f88a85563cee92.png"></a></p><p>توجد الجدران النارية Firewalls بهدف حجب المنافذ Ports غير المستخدمة؛ إلا أن السؤال يُطرح عن ما يجب فعله للخدمات التي تريد الوصول إليها دون أن تكون معروضة للجميع، تريد استخدامها عند الحاجة ومنع الوصول إليها في الأوقات الأخرى.</p><p>الطرق على المنافذ Port knocking هو إحدى وسائل إخفاء الخدمات العاملة على جهازك؛ فتعمل على جعل الجدار الناري يحمي الخدمات إلى أن تطلب منه فتح منفذ عبر إرسال متتالية محدَّدة من البيانات.</p><p>سنتحدث في هذا الدليل عن كيفية إعداد آلية للطرق على المنافذ من أجل إخفاء خدمة SSH باستخدام حزمة <code>knockd</code> على أوبنتو 14.04.</p><p><strong>ملحوظة:</strong> يغطي هذا الشرح الإصدار الرابع من بروتوكول IP. يفصل لينكس بين تأميني الإصدار الرابع والإصدار السادس. على سبيل المثال، لا تنطبق قواعد <code>iptables</code> إلا على حزم البيانات المنقولة عبر عناوين الإصدار الرابع، غير أنه يوجد مكافئ لها بالنسبة لعناوين الإصدار الرابع وهو <code>ip6tables</code>.</p><p>إذا كان الخادوم لديك معدا لاستخدام عناوين الإصدار السادس فلا تنس تأمين كل من <a href="https://academy.hsoub.com/devops/servers/%D8%AA%D9%88%D8%B5%D9%8A%D9%84-%D8%A7%D9%84%D8%B4%D9%91%D8%A8%D9%83%D8%A7%D8%AA-networking-%D9%84%D9%85%D9%8F%D8%AF%D8%B1%D8%A7%D8%A1-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-r62/">واجهات Interfaces</a> كل من الإصدارين باستخدام الأدوات المناسبة.</p><h2 id="كيف-يعمل-الطرق-على-المنافذ">كيف يعمل الطرق على المنافذ؟</h2><p>تتمثل فكرة الطرق على المنفذ في إعداد خدمة لمراقبة سجلات Logs الجدار الناري أو واجهات Interfaces الشبكة بحثا عن محاولات اتصال. تغير الخدمةُ قواعدَ الجدار الناري، إذا جرت محاولات اتصال معرَّفة مسبقا (تعرف بالطرْقات Knocks)، من أجل السماح بالاتصالات عبر منفذ معيَّن.</p><p>تسمح هذه الطريقة بالإبقاء على الخدمات مخفية إلى الوقت الذي تريد استخدمها فيه. لا يناسب هذا الإعداد خواديم الويب التي يُسمَح عادة لجميع الاتصالات بالوصول إليها؛ إلا أنها مفيدة للخدمات الموجهة فقط لمستخدمين معروفين وبصلاحيات محددة، على سبيل المثال خدمة SSH.</p><p>لا ينبغي جعل الطرق على المنافذ التدبير الوحيد لتأمين الخدمات، رغم أن متتالية الطرق يمكن أن تكون معقدة جدا. تنفذ الخدمات عادة طرق تأمين واستيثاق خاصة بها تُعرَض للمستخدم بعد إرساله متتالية الطرق الصحيحة. يضيف الطرق على المنافذ، في هذا الإطار، طبقة جديدة يجب أن يمر بها المستخدم قبل أن يرى طريقة الاستيثاق المعتادة.</p><p>يوفر الطرق على المنافذ ميزة أخرى مفيدة هي أنه لا يُصدِر أي ردود على محاولات الطرق. إذا حاول متسلل فحص المنافذ فسيرى أنها مغلقة وإن إحاول تخمين متتالية الطرق فيجب عليه التحقق بعد كل تخمين لمعرفة إن كان المنفذ فُتِح أم لا؛ الأمر الذي سيكون كافيا في أغلب الحالات ليمنع المهاجمين من الدخول ويصرف أنظارهم عن إعادة المحاولة.</p><p>سنستخدم خلال هذا الشرح الجدار الناري المدمج افتراضيا مع أوبنتو (<code>iptables</code>) ونثبت برنامج <code>knockd</code> لتوفير وظيفة الطرق على المنافذ.</p><h2 id="إعداد-iptables-لمنع-أغلب-الاتصالات">إعداد IPTables لمنع أغلب الاتصالات</h2><p>نحتاج، قبل أن نبدأ في إعداد آلية للطرق على المنافذ، إلى ضبط قاعدي للجدار الناري. سنمنع كل الاتصالات تقريبا.</p><p>يأتي جدار IPTables الناري مضمنا في أوبنتو إلا أنه لا توجد افتراضيا أي قاعدة مما يعني أنه يُسمَح لجميع الاتصالات بالمرور. يمكنك تعلم <a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AC%D8%AF%D8%A7%D8%B1%D9%8D-%D9%86%D8%A7%D8%B1%D9%8A%D9%91-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-iptables-%D8%B9%D9%84%D9%89-ubuntu-1404-r38/"> كيفية إعداد جدار ناري باستخدام IPTables على Ubuntu 14.04 </a>.</p><p>نبدأ بالسماح بالاتصال عبر الجهاز المحلي. يعني هذا القبول بالبيانات المرسَلة من الخادوم نفسه وهو ما يسمح للخدمات العاملة على الخادوم بالتواصل في ما بينها.</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo iptables -A INPUT -i lo -j ACCEPT</pre><p>يضيف الأمر أعلاه قاعدة إلى سلسلة <code>INPUT</code> التي تتعامل مع جميع الاتصالات القادمة إلى الخادوم. تطلب القاعدة التي أضفناها من <code>iptables</code> قبول جميع البيانات القادمة من الواجهة المحلية <code>lo</code> التي تستخدم للاتصالات الداخلية.</p><p>الخطوة التالية هي السماح لكل الاتصالات الجارية بالاستمرار؛ لذا ننفذ الأمر:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT</pre><p>تطلب القاعدة الموجودة في الأمر أعلاه من <code>iptables</code> السماح للاتصالات الجارية والبيانات المتعلقة بها بالمرور. هذه القاعدة مهمة ليمكننا مواصلة الاتصال بالخادوم عن بعد باستخدام SSH حتى لا نفقد الاتصال به عند بدء حظر الاتصالات.</p><p>ثم نضيف قواعد للسماح بالخدمات الموجهة للعموم، أي تلك التي لا يوجد شرط على مستخدميها مثل خادوم الويب (إن وُجد) الذي يعمل عادة على المنفذ رقم <code>80</code>:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT</pre><p>احذر أن تضيف قواعد للخدمات التي ستستخدم الطرق على المنافذ للوصول إليها. ستكون إضافةُ هذه القواعد مهمةَ خدمة الطرق التي ستعدل قواعد الجدار الناري حسب الطلب. لهذا السبب لن نضيف خادوم SSH إلى إعداد <code>iptables</code>.</p><p>حتى هذه اللحظة لم نضف سوى قواعد تقبل الاتصال ولم نضف أي قواعد لحظر الاتصالات. وهو ما يعني أن الجدار الناري لا زال يقبل جميع الاتصالات؛ بعضها مذكور صراحة، وهي تلك التي أضفناها.</p><p>سنمنع الآن جميع الاتصالات، ما عدا تلك التي حددناها في الأوامر السابقة:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo iptables -A INPUT -j DROP</pre><p>يعني هذا أن جميع محاولات الاتصال التي لا توافق إحدى القواعد المذكورة سابقا ستُحظَر. تمكن معاينة القواعد بتنفيذ الأمر:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo iptables -S</pre><p>النتيجة:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP</pre><p>لاحظ أنه لا توجد حتى الآن قاعدة في إعدادات الجدار الناري تسمح باتصالات SSH.</p><p>أنهينا الآن قواعد الجدار الناري، بقي أن نجعلها دائمة حتى لا يعاد تعيينها عند إعادة تشغيل الخادوم. نستخدم أداة <code>iptables-persistent</code> لهذا الغرض. نفذ الأمر التالي لتثبيتها:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo apt-get install iptables-persistent</pre><p>ثم شغل الخدمة بعد انتهاء التثبيت:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo service iptables-persistent start</pre><h2 id="تثبيت-خدمة-knockd">تثبيت خدمة Knockd</h2><p>يدعى البرنامج الذي سنستخدمه لتمكين آلية للطرق عبر المنافذ <code>knockd</code>. ثبته بتنفيذ الأمر التالي:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo apt-get install knockd</pre><p>لا يشغَّل البرنامج مباشرة بعد ثبيته وذلك حتى لا يحظُر بيانات كثيفة على الفور. يجب أن تضبط الخدمة وتفعلها يدويا.</p><h2 id="إعداد-knockd-لاستخدام-الطرق-على-المنافذ">إعداد Knockd لاستخدام الطرق على المنافذ</h2><p>يوجد ملف إعداد يجب تحريره لإعداد الخدمة:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo nano /etc/knockd.conf</pre><p>يجب أن يظهر لديك ملف بمحتوى شبيه بالتالي:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">[options]
UseSyslog

[openSSH]
sequence    = 7000,8000,9000
seq_timeout = 5
command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags    = syn

[closeSSH]
sequence    = 9000,8000,7000
seq_timeout = 5
command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags    = syn</pre><p>في المقطع <code>[options]</code> توجد تعليمة باسم <code>UseSyslog</code> تخبر خدمة <code>knockd</code> أن عليها استخدام الوسائل الاعتيادية لحفظ السجلات. ينتج عن هذه التعليمة إدراج السجلات ضمن المجلد <code>var/log/messages/</code>.</p><p>إذا أردت حفظ السجلات في مكان مغاير فيمكنك ذلك باستخدام التعليمة التالية بدلا من <code>UseSyslog</code> (حيث <code>path/to/log/file/</code> مسار ملف السجلات):</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">LogFile = /path/to/log/file</pre><p>ثم يأتي مقطعان يُستخدَمان لتجميع قواعد تُطابِق جميعها حدثا واحدا. لا يؤثر اسم المقطع على عمله إلا أنه يفيد لإعطاء نبذة لمن يفتح الملف عن عمل المقطع.</p><p>يوجد في ملف الإعداد الافتراضي مقطع يفتح منفذ SSH وآخر لغلق نفس المنفذ.</p><p>المعطى الذي يعيّن نمط الطرق هو التالي:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sequence    = 7000,8000,9000</pre><p>يعني النمط أعلاه أن مجموعة القواعد هذه ستبحث ما إذا كان نفس عنوان IP طلب الاتصال على المنفذ رقم <code>7000</code> متبوعا مباشرة بالمنفذ <code>8000</code> ثم أخيرا المنفذ <code>9000</code>. سنغير متتالية الطرق لتصبح على النحو التالي:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sequence    = 2022,3022,4022</pre><p>يوجد معطيان آخران في المجموعة يراقبان النشاط:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">seq_timeout = 5
tcpflags = syn</pre><p>يحدد المعطى الأول مدة زمنية يجب أن تكتمل فيها متتالية طلبات الاتصال المعرفة في المعطى السابق. أما المعطى الثاني فيحدد خيارا يجب أن يتواجد في حزم <code>tcp</code> حتى تكون صالحة (يستخدم هذا الخيار لمعرفة الطريقة التي يجب بها التعامل مع الحزم وحالتها). يشيع استخدام القيمة <code>syn</code> للتفريق بين الحزم التي نريدها وتلك التي تنشئها برامج مثل SSH في الخلفية.</p><p>ثم نجد الأمر:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT</pre><p>يجب أن تتعرف على قاعدة من قواعد <code>iptables</code>. يمكن إذن تفسير المقطع بأنه عند إرسال متتالية الطرق في الوقت المحدد فسينفذ الأمر أعلاه من أجل السماح باتصالات SSH.</p><p>إذا تفطنت لإعدادات <code>iptables</code> فسترى أن القاعدة الجديدة تستخدم الخيار <code>A-</code> لإلحاق القاعدة بنهاية سلسلة <code>INPUT</code>؛ وهو ما يعني أنها ستكون بعد القاعدة التي تحظر كافة الاتصالات.</p><p>سنحتاج للتعديل على الأمر وإبدال القاعدة بأخرى تُدرَج في بداية الملف؛ لذا سنستخدم الخيار <code>I-</code> ونعلم القاعدة على أنها القاعدة رقم 1:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">command = /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT</pre><p>ستُضاف قاعدة جديدة للسماح بقبول اتصالات SSH من المسخدِم الذي أرسل متتالية الطرق. الجزء <code>%IP%</code> الموجود في القاعدة سيُبدَل بعنوان IP الذي أتت منه متتالية الطرق.</p><p>المقطع الأخير يؤدي عملا مشابها بمتتالية مغايرة وأمر يعمد إلى حذف قاعدة فتح اتصالات SSH من <code>iptables</code>. سنستخدم المتتالية <code>4022,3022,2022</code> لإنهاء الاتصال الذي أنشأناه وغلق المنفذ المرتبط به (أي المنفذ رقم <code>22</code>).</p><p>يجب تغيير المتتاليات الموجودة افتراضيا في المقاطع وإبدالها بأخرى عشوائية. ترك المتتالية الموجودة افتراضيا في ملف الإعداد يجعل من تنفيذ آلية طرق المنافذ هذه بلا فائدة (الجميع يعرف المتتالية الافتراضية).</p><p>أغلق الملف (CTRl + X) ثم احفظه (CTRL +O).</p><h2 id="تشغيل-خدمة-knockd">تشغيل خدمة Knockd</h2><p>يمكننا الآن بعد أن أنهينا إعداد <code>knockd</code> للحصول على مجموعة قواعد صالحة اختبارُ الإعداد بتشغيل الخدمة. تذكر أن الإعداد الافتراضي صالح إلا أنه لن يكون آمنا إلا إذا غيرت متتالية الطرق الافتراضية لكل مقطع.</p><p>يجب التعديل على ملف آخر لتفعيل الخدمة:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo nano /etc/default/knockd</pre><p>نغير قيمة الخيار <code>START_KNOCKD</code> لتصبح <code>1</code>:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">START_KNOCKD=1</pre><p>أغلق الملف (CTRl + X) ثم احفظه (CTRL +O).</p><p>يمكننا الآن تشغيل الخدمة، لذا ننفذ الأمر:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo service knockd start</pre><p>يشغل الأمر خدمة <code>knockd</code> ويسمح بتغيير قواعد الجدار الناري عند الطرق على المنافذ حسب المتتالية المعرَّفة في ملف الإعداد.</p><h2 id="اختبار-الطرق-على-المنافذ">اختبار الطرق على المنافذ</h2><p>سنرى الآن ما إذا كان بإمكاننا التعديل على قواعد <code>iptables</code> بالطرق على المنافذ المعرفة في ملف الإعداد. أبق - احترازا - على اتصالك الجاري بالخادوم نشطا وافتح نافذة جديدة للطرفية.</p><p>توجد الكثير من الأدوات للاستخدام في طرق المنافذ؛ ومن أشهرها <code>nmap</code>، <code>netcat</code> وعميل آخر صُمِّم خصيصا للطرق واسمه <code>knock</code>.</p><p>سنستخدم أداة <code>knock</code> ولكن قبل ذلك فلنتأكد أولا من أن منفذ SSH مغلق فعليا.</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">ssh root@server_ip_address</pre><p>يجب أن تكون النتيجة على النحو التالي:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">ssh: connect to host server_ip_address port 22: Operation timed out</pre><p>يعني هذا أن الخادوم لم يُجِب وأن المهلة الممنوحة للاتصال انقضت. يعود السبب إلى أن خدمة SSH محظورة على الخادوم حسب قواعد <code>iptables</code>. اضغط على زري <code>CTRL</code> و<code>C</code> للعودة إلى الطرفية إن طالت مدة محاولة الاتصال.</p><h2 id="أداة-knock-لطرق-المنافذ">أداة Knock لطرق المنافذ</h2><p>أداة <code>knock</code> وسيلة سهلة للطرق على المنافذ يطورها نفس فريق <code>knockd</code>. تُضَمَّن هذه الأداة في حزمة <code>knockd</code>؛ لذا يمكن تثبيتها على الجهاز العميل مثل ما فعلنا على الخادوم:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo apt-get install knockd</pre><p>يمكن أيضا تنزيل الأداة من الموقع الرسمي الذي توجد به إصدارات لكل من Windows وOS X؛ وكذلك لأندرويد وiOS.</p><p>تُستخدَم أداة <code>knock</code> على النحو التالي:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">knock server_ip_address sequence</pre><p>حيث <code>sequence</code> متتالية الطرق و<code>server_ip_address</code> عنوان IP الخادوم. بالنسبة لمثالنا سيكون الاستخدام على النحو التالي:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">knock server_ip_address 2022 3022 4022</pre><p>ولإغلاق المنفذ نرسل المتتالية التي حددناها في ملف الإعداد:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">knock server_ip_address 4022 3022 2022</pre><h2 id="إعداد-knockd-لغلق-الاتصالات-تلقائيا">إعداد Knockd لغلق الاتصالات تلقائيا</h2><p>تأكدنا الآن من أن خدمة الطرق تعمل. سنغير الإعدادات لجعلها أكثر صلابة.</p><p>أعد فتح ملف الإعداد على الخادوم</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo nano /etc/knockd.conf</pre><p>يتيح <code>knockd</code> إمكانية تحديد مدة زمنية يُنفَّذ أمر محدد بعد انقضائها؛ نستفيد من هذه الميزة للاكتفاء بقاعدة واحدة لفتح وإغلاق منفذ SSH؛ مما يعني أننا لن نحتاج لإرسال متتالية الطرق حتى يغلَق المنفذ.</p><p>يمكن حذف مقاطع openSSH وcloseSSH ضمن ملف الإعداد لأننا سنبدلها بمقطع وحيد نسميه SSH:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">[options]
UseSyslog

[SSH]</pre><p>سنعرِّف داخل مقطع SSH متتالية للطرق، خيار <code>tcpflags</code> ومهلة زمنية للانتظار ينبغي الطرق على المنافذ خلالها؛ مثل ما فعلنا مع المقطعين السابقين. سنضيف أيضا الأمر المستخدَم لفتح منفذ SSH:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">[options]
    UseSyslog

[SSH]
    sequence = 5438,3428,3280,4479
    tcpflags = syn
    seq_timeout = 15
    start_command = /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT</pre><p>اختر متتالية منافذ فريدة. حددنا في هذا المثال أربعة منافذ. تمكن زيادتها حسب رغبتك ولكن انتبه إلى أنه يجب طرق المنافذ خلال المدة الزمنية (بالثواني) المحدَّدة ضمن معطى <code>seq_timeout</code>.</p><p>معطى <code>start_command</code> هو نفسه معطى<code>command</code> الذي رأيناه في الأمثلة السابقة؛ الفرق الوحيد هو أن الاسم أكثر إسهابا.</p><p>يأتي الآن دور المعطيات الجديدة التي ستساعدنا على غلق المنفذ:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">[options]
UseSyslog

[SSH]
sequence = 5438,3428,3280,4479
tcpflags = syn
seq_timeout = 15
start_command = /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT</pre><p>يحدد معطى <code>cmd_timeout</code> الثواني التي ستنتظرها خدمة <code>knockd</code> قبل تنفيذ الأمر الموجود ضمن معطى <code>stop_command</code>.</p><p>النتيجة هي أنه عند إرسال المتتالية الصحيحة فإن المنفذ سيُفتح لمدة 10 ثوان ثم يُغلق من جديد.</p><p>احفظ الملف ثم أغلقه.</p><p>أعد تشغيل الخدمة لاعتماد القواعد الجديدة:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">sudo service knockd restart</pre><p>يمكن استخدام الأمر التالي للاتصال ضمن الوقت المحدد:</p><pre data-pbcklang="" data-pbcktabsize="" class="ipsCode prettyprint">knock server_ip_address 5438 3428 3280 4479 &amp;&amp; ssh root@server_ip_address</pre><p>سيغلق المنفذ بعد 10 ثوان من الاتصال.</p><h2 id="خاتمة">خاتمة</h2><p>يُنظَر إلى الطرق على المنافذ على أنه مجرد إخفاء للخدمات بدل تأمينها؛ على الرغم من ذلك يبقى وسيلة رائعة لإضافة طبقة أمان جديدة ضد الهجمات العشوائية.</p><p>يجب دائما تأمين خدماتك عبر الوسائل الأمنية المتاحة في النظام إلا أن إضافة مِصيدة مثل الطرق على المنافذ أمام التدابير الأمنية المعتادة يمكن أن يقلل بقدر ملحوظ هجمات القوة القاسية ومحاولات التسلل التي يتعرض لها خادومك.</p><p>ترجمة - بتصرف - لمقال <a rel="external nofollow" href="https://www.digitalocean.com/community/tutorials/how-to-use-port-knocking-to-hide-your-ssh-daemon-from-attackers-on-ubuntu">How To Use Port Knocking to Hide your SSH Daemon from Attackers on Ubuntu</a>.</p>
]]></description><guid isPermaLink="false">87</guid><pubDate>Sun, 26 Jul 2015 23:26:56 +0000</pubDate></item><item><title>&#x627;&#x644;&#x639;&#x645;&#x644; &#x645;&#x639; &#x62E;&#x648;&#x627;&#x62F;&#x64A;&#x645; SSH: &#x627;&#x644;&#x639;&#x645;&#x644;&#x627;&#x621; &#x648;&#x627;&#x644;&#x645;&#x641;&#x627;&#x62A;&#x64A;&#x62D;</title><link>https://academy.hsoub.com/devops/security/ssh/%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D9%85%D8%B9-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-ssh-%D8%A7%D9%84%D8%B9%D9%85%D9%84%D8%A7%D8%A1-%D9%88%D8%A7%D9%84%D9%85%D9%81%D8%A7%D8%AA%D9%8A%D8%AD-r55/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_05/ssh-basics.png.8df2538f4060c4bf98f2fb0f893b32e6.png" /></p>

<p>
	<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> عبارة عن بروتوكول آمن يُستخدم كوسيلة أساسيّة للاتصال بخوادم لينكس عن بُعد. <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> تُقدّمُ واجهة نصّية بحيثُ تعطيك الصّلاحيّة لكتابة أي أوامر وتنفيذها مباشرة على الخادوم. بعد الاتصال، جميع الأوامر التي تكتبها على الطرفيّة محليّاً تُرسل إلى الخادوم عن بعد وتُنفّذ هناك. <br>
	في هذا الدّليل السّريع، سنُغطّي بعضاً من أكثر وسائل الاتّصال بSSH شيوعاً لتحقيق أهدافك. هذا المقال يُمكن أن يُستعمل كمرجع سريعٍ كلّما احتجت إلى معرفة كيفية الاتصال بخادومك أوضبطه بطرق مختلفة.
</p>

<div id="wmd-preview-section-344">
	<h2 id="كيف-تستعمل-هذا-الدليل">
		نظرة عامة على <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>
	</h2>
</div>

<div id="wmd-preview-section-22">
	<p>
		أشهر وسيلة للاتّصال بخادوم لينكس عن بعد هي استعمال <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> .<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> اختصار ل Secure Shell أو شل آمن، حيث تُوفّر وسيلة آمنة لتنفيذ الأوامر، إضافة تعديلات وضبط الخدمات عن بُعد. عندما تتّصل عبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، تقوم بتسجيل الدّخول باستخدام حساب موجود على الخادوم.
	</p>
</div>

<div id="wmd-preview-section-23">
	<h2 id="كيف-يعمل-ssh">
		كيف يعمل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>
	</h2>

	<p>
		عندما تتّصل عبر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، ستدخلُ إلى جلسة شل (shell session)، وهي واجهة نصّيّة تُمكّنك من التّفاعل مع خادومك. أثناء الجلسة جميع الأوامر التي تُنفّذها في الطرفيّة محليّاً تُرسل عبر نفق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> أو <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> tunnel مُشفّر وتُنفّذ على الخادوم. 
	</p>

	<p>
		اتصال <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> يُنفّذ باستخدام نموذج خادوم خاص بالعميل. هذا يعني أن إنشاء اتصال <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> يتطلّب تشغيل برمجيّة تسمى عفريت <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> على الخادوم. تستمع هذه البرمجيّة للاتصالات على منفذ شبكة معيّن، طلبات تسجيل الدّخول والاستيثاق authentication من هوية صاحب الاتصال وتقوم بتقديم البيئة المناسبة إذا قام المستخدم بتوفير المعلومات الصّحيحة. 
	</p>

	<p>
		يجب على المُستخدم أن يمتلك على جهازه برمجية تسمى عميل  <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> أو <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> client، البرمجية تعرف كيف تتواصل باستخدام بروتوكول <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> ويُمكن أن تُمنَح معلومات عن المُضيف البعيد (الخادوم) للاتّصال به،عن طريق اسم المستخدم ومعلومات يجب تمريرها للاتّصال بنجاح. يمكن للعميل أيضاً أن يحدّد تفاصيل معيّنة عن نوع الاتّصال المرغوب فيه.
	</p>
</div>

<div id="wmd-preview-section-24">
	<h2 id="كيف-يقوم-ssh-بتسجيل-دخول-المستخدمين">
		كيف يقوم <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> بتسجيل دخول المستخدمين
	</h2>

	<p>
		العميل يصادق إمّا باستخدام كلمات المُرور ( أقلّ أماناً وغير منصوح بها) أو عن طريق مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، التي تعتبر آمنة جدّاً. 
	</p>

	<p>
		كلمات المرور تُشفَّرُ وتعتبر سهلة الفهم بالنّسبة للمُستخدمين الجُدد. لكنّ المُخترقين يستعملون برمجيّات خبيثة يُمكن لها أن تُكرّر محاولات الدّخول إلى حواسيب من يستخدمون كلمات المرور، ما قد يُؤدي إلى اختلال أمني. لهذا السّبب ننصح دائما بالاعتماد على استيثاق <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> المبدئي لمُعظم الإجراءات. 
	</p>

	<p>
		مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> هي مجموعة من المفاتيح المُشفّرة يُمكن استعمالها للاستيثاق. كلّ مجموعة تحتوي على مفتاح عام وخاص. يُمكن نشر المفتاح العام بشكل حرّ، أما المفتاح الخاص فيجب الاحتفاظ به ولا يجب أن يُكشف لأحد.
	</p>

	<p>
		للاستيثاق باستخدام مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، يجب على المستخدم أن يمتلك زوج مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> على جهازه المحلي. وعلى الخادم البعيد المفتاح العام يجب أن ينسخ إلى ملفّ بداخل مجلّد منزل المُستخدم على <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/authorized_keys./~</span> . هذا الملفّ يحتوي على قائمة من المفاتيح العامّة - واحد في كلّ سطر- مُخوّلٌ لها بالدّخول إلى الحساب.
	</p>

	<p>
		عندما يتّصل عميل بالمُضيف Host راغباً باستخدام استيثاق مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، سيُعلم الخادومَ عن أي مفتاح عام يستخدم. يتحقّق الخادوم بعد ذلك من ملفّ المفاتيح المُخوّل لها <span style="font-family:courier new,courier,monospace;">authorized_keys</span> باحثاً عن المفتاح العام المُستخدم. ثم يولّد سلسلة نصّية عشوائيا ويُشفّر باستخدام المفتاح العام، هذا النّص المُشفّر يُمكن فك تشفيره فقط باستعمال المفتاح الخاصّ المُقترن. سيُرسل الخادوم هذه الرّسالة المُشفرة إلى العميل لاختبار إذا ما كان فعلا يمتلك المفتاح الخاصّ المُرتبط.
	</p>

	<p>
		عند استلام الرّسالة، سيقوم العميل بفك التّشفير باستخدام المفتاح الخاص ويجمع السّلسلة نصّية العشوائية مع هوية جلسة سابقة (session ID) . ويولّد بعد ذلك مزيج MD5 الخاص بالقيمة وينقلها مجدّدا إلى الخادوم. الخادوم يمتلك سابقا الرّسالة الأصليّة وهوية الجلسة، لذلك يُمكنه أن يُقارن مزيج MD5 المولّد من القيّم ويُحدّد بأن العميل يجب أن يمتلك المفتاح الخاص.
	</p>

	<p>
		الآن بما أنّك تعلم كيف يعمل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، يُمكننا البدء في الحديث عن بعض الأمثلة للتعرّف على الطّرق المُختلفة للعمل مع <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>.
	</p>
</div>

<div id="wmd-preview-section-25">
	<h2 id="توليد-مفاتيح-ssh-والعمل-معها">
		توليد مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> والعمل معها
	</h2>

	<p>
		هذا القسم سيغطي كيف تولّد مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> على جهاز عميل ونشر المفتاح العام إلى الخوادم حيث يجب أن تُستخدم. هذا قسم جيّد للبدء به إذا لم يسبق لك أن ولّدت مفاتيح، ويجب عليك البدء به إذا أردت تأمين خادومك نظراً لزيادة الأمان التي تتيحه لنا في الاتصّالات المُستقبليّة.
	</p>
</div>

<div id="wmd-preview-section-26">
	<h3 id="توليد-زوج-مفاتيح-ssh">
		توليد زوج مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>
	</h3>

	<p>
		توليد زوج مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> عام وخاص على جهازك المحلي هو أول خطوة نحو استيثاق مع خادوم عن بعد بدون كلمة مرور. إلا إذا كنت تملك سببا جيدا لعدم فعل ذلك، يجب عليك دائما الاتصال باستخدام مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>. 
	</p>

	<p>
		يمكن استخدام مجموعة من خوارزميّات التشفير لتوليد مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، مثل RSA، DSA، ECDSA. مفاتيح RSA مُفضلة بشكل عام وهي نوعية المفاتيح الافتراضية.
	</p>

	<p>
		لتوليد زوج مفاتيح RSA على جهازك المحلي، أكتب: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
$ ssh-keygen

Generating public/private rsa key pair. 
Enter file in which to save the key (/home/demo/.ssh/id_rsa): </pre>

	<p>
		هذا المحث (prompt) يتيح لك اختيار مكان لتخزين مفتاح RSA الخاص. اضغط Enter للخيار الافتراضي، الذي سيُخزنها في مجلّد .<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> المخفي قي مجلد المنزل. ترك المسار الافتراضي سيتيح لعميل <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> إيجاد المفاتيح آلياً. 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: </pre>

	<p>
		المحث التالي يتيح لك إدخال جملة مرور بطول اعتباطي لتأمين مفتاحك الخاص. افتراضياً يجب عليك إدخال جملة المرور هذه في كل مرّة تستعمل المفتاح الخاص، كإجراء أمني إضافي. يُمكنك أن تضغط Enter لترك الحقل فارغا إذا لم ترغب في إنشاء كلمة مرور. تذكّر فقط أن هذا سيخوّل أي شخص يملك قابلية التحكم بمفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> الخاص للدخول إلى الخادوم الخاص بك. 
	</p>

	<p>
		إذا اخترت وضع كلمة مرور لن يظهر شيء على الشاشة أثناء الكتابة، وهذا من أجل الاحتياط الأمني. 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
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+    |
+-----------------+</pre>

	<p>
		هذه العملية ولّدت زوج مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> من نوع RSA، وملفّات تحت المجلد المخفي .<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> في مجلد المنزل وهذه الملفّات هي: 
	</p>

	<ul><li>
			<span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/id_rsa./~</span>: المفتاح الخاص. لا تنشر هذا الملفّ! 
		</li>
		<li>
			<span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/id_rsa.pub./~</span>: المفتاح العام المُرتبط. هذا الملفّ يمكن مشاركته بحرية.
		</li>
	</ul></div>

<div id="wmd-preview-section-27">
	<h3 id="توليد-زوج-مفاتيح-مع-رقم-أكبر-من-البتات-bits">
		توليد زوج مفاتيح مع رقم أكبر من البتات Bits
	</h3>

	<p>
		مفاتيح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> تكون افتراضياً 2048 بت. هذا يعتبر جيّداً بشكل عام أمنياً، لكنّك تستطيع تحديد عدد أكبر لمزيد من الأمان. <br>
		لفعل ذلك ضَمِّن معامل -b مع عدد البتات الذي تريد. معظم الخوادم تدعم 4096 بت على الأقل. المفاتيح الأطول يُمكن ألّا تُقبل لأغراض الحماية من DDOS: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
ssh-keygen -b 4096 </pre>

	<p>
		إذا سبق لك أن أنشئت مفتاحاً، سيُطلب منك إذا ما كنت ترغب في الكتابة فوق المفتاح السّابق: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
Overwrite (y/n)? </pre>

	<p>
		إذا اخترت نعم (y)، فإن المفتاح الجديد سيكتب فوق المفتاح السّابق ولن تستطيع استعمال المفتاح القديم بعدها للدّخول إلى الخادوم، لذلك كن حذرا أثناء تغيير المفتاح.
	</p>
</div>

<div id="wmd-preview-section-28">
	<h3 id="حذف-وتغيير-جملة-المرور-على-المفتاح-الخاص">
		حذف وتغيير جملة المرور على المفتاح الخاص
	</h3>

	<p>
		إذا سبق لك وأن عيّنت جملة مرور للمفتاح الخاص ورغبت في تغييرها فالأمر بسيط، ويمكنك أن تقوم به بسهولة. 
	</p>

	<p>
		ملاحظة: لتغيير أو حذف جملة المُرور، يجب عليك معرفة جملة المرور الأصليّة. إذا فقدت جملة المرور إلى المفتاح،فللأسف لا يوجد طريقة لإرجاعها وسيتوجّب عليك توليد زوج مفاتيح جديد.
	</p>

	<p>
		لتغيير أو حذف جملة المرور، فقط أكتب: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
ssh-keygen -p 
Enter file in which the key is (/root/.ssh/id_rsa): </pre>

	<p>
		يُمكنك أن تُحدد مسار المفتاح الذي تحاول تعديله أو اضغط Enter لقبول القيمة الافتراضيّة: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
Enter old passphrase: </pre>

	<p>
		أكتب جملة المرور القديمة المراد تغييرها. بعد ذلك ستُسأل لإدخال جملة مرور جديدة:
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again:</pre>

	<p>
		هنا أكتب جملة المرور الجديدة أو اضغط Enter لحذفها.
	</p>
</div>

<div id="wmd-preview-section-29">
	<h3 id="عرض-بصمة-مفتاح-ssh">
		عرض بصمة مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>
	</h3>

	<p>
		ينشر كل زوج مفاتيح بصمة مُشفّرة يُمكن استعمالها لتعريف المفاتيح بشكل فريد. يُمكن أن يكون هذا جيّدا في كثير من الحالات. 
	</p>

	<p>
		لإيجاد بصمة مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، اكتب: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
ssh-keygen -l 
Enter file in which the key is (/root/.ssh/id_rsa): </pre>

	<p>
		إذا كان هذا هو مسار المفتاح الصحيح اضغط ENTER ، أو اكتب المسار الخاص إذا كان المسار مختلفاً، ستُرجع سلسلة نصيّة تحتوي على سعة المفتاح من البتات، البصمة، والحساب والمُضيف الذي أنشئت له، والخوارزمية المُستخدمة: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
4096 8e:c4:82:47:87:c2:26:4b:68:ff:96:1a:39:62:9e:4e demo@test (RSA) </pre>

	<h3>
		نسخ مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> العام إلى الخادوم مع <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>-Copy-ID 
	</h3>

	<p>
		لنسخ مفتاحك العام إلى الخادوم، بغرض الاستيثاق بدون كلمة مرور، سنتخذ بعض الإجراءات.
	</p>

	<p>
		إذا كنت حالياً تمتلك وصولا إلىSSH عن طريق كلمة مرور مضبوطاً على الخادوم، وتمتلك أداة<span style="font-family:courier new,courier,monospace;"> <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>-copy-id </span>مثبّتة، فهذه العمليّة بسيطة. أداة <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>-copy-id </span>تأتي مضمّنة على حزم OpenSSH في كثير من توزيعات لينكس، لذلك فمن المُحتمل أن تكون لديك افتراضيا. 
	</p>

	<p>
		إذا كنت تملك هذا الخيّار، يُمكنك بسهولة نقل مفتاحك العام باستعمال: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
ssh-copy-id username@remote_host </pre>

	<p>
		سيُطلب منك إدخال كلمة مرور المُستخدم على الجهاز البعيد: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
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: </pre>

	<p>
		بعد كتابة كلمة المرور، مُحتوى مفتاح <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/id_rsa.pub./~</span> سوف يُلحق إلى آخر ملف <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/authorized_keys./~</span> الخاصّ بحساب المُستخدم: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
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
</pre>
</div>

<div id="wmd-preview-section-30">
	<h3 id="نسخ-مفتاح-ssh-العام-إلى-خادوم-بدون-ssh-copy-id">
		نسخ مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> العام إلى خادوم بدون <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>-Copy-ID
	</h3>

	<p>
		إذا لم تكن تملك أداة <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>-copy-id</span>، لكنك لا زلت تملك وصولا إلى الخادوم البعيد بكلمة مرور، يُمكنك نسخ محتويات المفتاح العام بطريقة مختلفة. 
	</p>

	<p>
		يُمكنك إرجاع مُحتويات المفتاح وتمريرها إلى أمر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>، في الجهة البعيدة يُمكنك التأكد إذا ما كان مجلّد <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>./~</span> موجوداً، وبعد ذلك ألحق المحتوى المُمَرّر إلى ملفّ <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/authorized_keys./~</span>: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh &amp;&amp; cat &gt;&gt; ~/.ssh/authorized_keys"</pre>

	<p>
		سيُطلب منك كتابة كلمة المرور للحساب البعيد: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
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: </pre>

	<p>
		بعد إدخال كلمة المرور، سيُنسخ مفتاحك، متيحاً لك الاتصال بدون كلمة مرور: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
ssh username@remote_IP_host</pre>

	<h2>
		نسخ مفتاح <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> العام إلى خادوم يدويا
	</h2>
</div>

<div id="wmd-preview-section-31">
	<p>
		إذا لم تكن تملك وصولا عن طريق كلمة مرور، ستحتاج لإضافة مفتاحك العام إلى الخادوم البعيد يدويّاً. 
	</p>

	<p>
		على جهازك المحليّ، يُمكنك إيجاد محتويات ملفّ مفتاحك العام بكتابة: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
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 </pre>

	<p>
		يُمكنك نسخ هذه القيمة، ولصقها يدويّاً في المكان المناسب على الخادوم البعيد. يجب عليك أن تتّصل بالخادوم بوسيلة مختلفة.
	</p>

	<p>
		على الخادوم البعيد، أنشئ مجلّد <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>./~</span> إذا لم يكن موجوداً من قبل: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
mkdir -p ~/.ssh </pre>

	<p>
		بعد ذلك، يُمكنك إنشاء أو إلحاق ملفّ <span style="font-family:courier new,courier,monospace;"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>/authorized_keys./~</span> بكتابة: 
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4">
echo سلسلة_المفتاح_العام &gt;&gt; ~/.ssh/authorized_keys </pre>

	<p>
		يجب عليك الآن أن تتمكّن من الدّخول إلى الخادوم بدون كلمة مرور عبر أمر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr>:
	</p>

	<pre class="php ipsCode prettyprint" data-pbcklang="php" data-pbcktabsize="4" style="line-height: 22.3999996185303px;">
ssh username@remote_IP_host</pre>

	<p>
		ترجمة -مع شيءٍ من التصرّف- للقسم الأول من مقال: <a href="https://www.digitalocean.com/community/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys" rel="external nofollow"><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> Essentials: Working with <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr> Servers, Clients, and Keys</a>.
	</p>
</div>
]]></description><guid isPermaLink="false">55</guid><pubDate>Wed, 27 May 2015 23:10:00 +0000</pubDate></item></channel></rss>
