Linux / Unix Command: sshd

اسم

sshd - OpenSSH SSH daemon

ملخص

sshd [- deiqtD46 ] [- b bits ] [- f config_file ] [- g login_grace_time ] [- h host_key_file ] [- k key_gen_time ] [- خيار o ] [- p port ] [- u len ]

وصف

sshd (SSH Daemon) هو البرنامج الخفي لـ ssh (1). معا هذه البرامج محل rlogin و rsh ، وتوفير اتصالات آمنة مشفرة بين مضيفين غير موثوق بها عبر شبكة غير آمنة. تهدف البرامج إلى أن تكون سهلة التركيب والاستخدام قدر الإمكان.

sshd هو البرنامج الخفي الذي يستمع للاتصالات من العملاء. يتم تشغيله عادةً عند التمهيد من / etc / rc. إنه يعمل على تشغيل خفي جديد لكل اتصال وارد. تتعامل الدايمونات المتقاطعة مع مفاتيح تبادل المفاتيح والتشفير والتوثيق وتنفيذ الأوامر وتبادل البيانات. هذا التطبيق من sshd يدعم كل من بروتوكول SSH الإصدار 1 و 2 في وقت واحد.

بروتوكول SSH الإصدار 1

يحتوي كل مضيف على مفتاح RSA خاص بالمضيف (عادة 1024 بت) يستخدم لتحديد المضيف. بالإضافة إلى ذلك ، عند بدء تشغيل البرنامج ، يقوم بإنشاء مفتاح خادم RSA (عادةً 768 بت). يتم إعادة إنشاء هذا المفتاح عادةً كل ساعة إذا تم استخدامه ، ولا يتم تخزينه على القرص.

كلما كان العميل يربط الخفي يستجيب مع المضيف العام ومفاتيح الخادم. يقارن العميل مفتاح المضيف RSA مقابل قاعدة البيانات الخاصة به للتحقق من أنه لم يتغير. العميل ثم ينشئ رقم عشوائي 256 بت. يقوم بتشفير هذا الرقم العشوائي باستخدام كل من مفتاح المضيف ومفتاح الخادم ويرسل الرقم المشفر إلى الخادم. ثم يستخدم كلا الجانبين هذا الرقم العشوائي كمفتاح جلسة والذي يتم استخدامه لتشفير كافة الاتصالات الأخرى في الجلسة. يتم تشفير بقية الجلسة باستخدام تشفير تقليدي ، حاليًا Blowfish أو 3DES ، مع استخدام 3DES افتراضيًا. يحدد العميل خوارزمية التشفير لاستخدامها من تلك التي يقدمها الخادم.

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

عادةً يتم تعطيل مصادقة Rhosts لأنه غير آمن بشكل أساسي ، ولكن يمكن تمكينه في ملف تكوين الخادم إذا رغبت في ذلك. لم يتم تحسين أمان النظام ما لم يتم تعطيل rshd rlogind و rexecd (وبالتالي يعطل تماما rlogin و rsh في الجهاز).

بروتوكول SSH الإصدار 2

يعمل الإصدار 2 بشكل مشابه: لكل مضيف مفتاح خاص بالمضيف (RSA أو DSA) يستخدم لتحديد المضيف. ومع ذلك ، عند بدء daemon ، فإنه لا يقوم بإنشاء مفتاح خادم. يتم توفير الأمان الأمامي من خلال اتفاقية مفتاح Diffie-Hellman. وينتج عن هذه الاتفاقية الرئيسية مفتاح جلسة مشترك.

يتم تشفير بقية الجلسة باستخدام تشفير متماثل ، أو 128 بت AES حاليًا أو Blowfish أو 3DES أو CAST128 أو Arcfour أو 192 بت AES أو 256 بت AES. يحدد العميل خوارزمية التشفير لاستخدامها من تلك التي يقدمها الخادم. بالإضافة إلى ذلك ، يتم توفير سلامة جلسة العمل من خلال رمز مصادقة رسالة التشفير (hmac-sha1 أو hmac-md5).

يوفر بروتوكول الإصدار 2 مستخدمًا يستند إلى المفتاح العام (PubkeyAuthentication) أو طريقة مصادقة العميل (HostbasedAuthentication) ، ومصادقة كلمة المرور التقليدية ، وطرق الاستجابة المستندة إلى التحدي.

تنفيذ الأوامر وإعادة توجيه البيانات

إذا قام العميل بنجاح بمصادقة نفسه ، فسيتم إدخال مربع حوار لإعداد الجلسة. في هذا الوقت ، قد يطلب العميل أشياء مثل تخصيص رسالة نصية زائفة أو إعادة توجيه اتصالات X11 أو إعادة توجيه اتصالات TCP / IP أو إعادة توجيه اتصال وكيل المصادقة عبر القناة الآمنة.

وأخيراً ، يطلب العميل إما shell أو تنفيذ أمر. ثم تدخل الأطراف في وضع الجلسة. في هذا الوضع ، قد يقوم أي من الطرفين بإرسال البيانات في أي وقت ، ويتم توجيه مثل هذه البيانات إلى / من shell أو الأمر على جانب الخادم ، ووحدة طرف المستخدم على جانب العميل.

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

يمكن تكوين sshd باستخدام خيارات سطر الأوامر أو ملف التكوين. تتجاوز خيارات سطر الأوامر القيم المحددة في ملف التهيئة.

يقوم sshd بإعادة قراءة ملف التكوين الخاص به عندما يتلقى إشارة تعليق ، SIGHUP من خلال تنفيذ نفسه بالاسم الذي تم بدء تشغيله به ، أي ، / usr / sbin / sshd

الخيارات هي كما يلي:

ب بت

يحدد عدد وحدات البت في مفتاح خادم الإصدار 1 من البروتوكول المؤقت (المفترض 768).

وضع التصحيح. يرسل الملقم إخراج debbose verbose إلى سجل النظام ولا يضع نفسه في الخلفية. لن يعمل الخادم أيضًا وسيقوم بمعالجة اتصال واحد فقط. هذا الخيار مخصص فقط لتصحيح الأخطاء للملقم. تزيد الخيارات المتعددة -d مستوى تصحيح الأخطاء. الحد الأقصى هو 3.

-e

عند تحديد هذا الخيار ، سيقوم sshd بإرسال الإخراج إلى الخطأ القياسي بدلاً من سجل النظام.

-f configuration_file

يحدد اسم ملف التكوين. الافتراضي هو / etc / ssh / sshd_config sshd يرفض البدء إذا لم يكن هناك ملف تهيئة.

-g login_grace_time

يعطي وقت السماح للعملاء لتوثيق أنفسهم (الافتراضي 120 ثانية). إذا فشل العميل في مصادقة المستخدم خلال هذه الثواني العديدة ، فسيقوم الخادم بالقطع والخروج. قيمة الصفر تشير إلى أي حد.

-h host_key_file

يحدد ملفًا يتم من خلاله قراءة مفتاح المضيف. يجب إعطاء هذا الخيار إذا لم يتم تشغيل sshd كجذر (لأن ملفات مفتاح المضيف العادي عادة لا يمكن قراءتها بواسطة أي شخص سوى الجذر). الافتراضي هو / etc / ssh / ssh_host_key لإصدار البروتوكول 1 ، و / etc / ssh / ssh_host_rsa_key و / etc / ssh / ssh_host_dsa_key لإصدار البروتوكول 2. من الممكن أن يكون لديك ملفات مفتاح مضيف متعددة لإصدارات البروتوكول المختلفة ومفتاح المضيف الخوارزميات.

-أنا

يحدد أنه يتم تشغيل sshd من inetd. عادة لا يتم تشغيل sshd من inetd لأنه يحتاج إلى إنشاء مفتاح الخادم قبل أن يتمكن من الاستجابة للعميل ، وقد يستغرق ذلك عشرات الثواني. سيكون على العملاء الانتظار طويلاً إذا تم تجديد المفتاح في كل مرة. ومع ذلك ، مع أحجام مفاتيح صغيرة (على سبيل المثال ، 512) باستخدام sshd من inetd قد يكون ممكنا.

-k key_gen_time

يحدد مدى تكرار إعادة إنشاء مفتاح خادم الإصدار 1 المؤقت المؤقت (الافتراضي 3600 ثانية ، أو ساعة واحدة). الدافع وراء تجديد المفتاح في كثير من الأحيان هو أن المفتاح لا يتم تخزينه في أي مكان ، وبعد حوالي ساعة ، يصبح من المستحيل استرداد المفتاح لفك تشفير الاتصالات المعترضة حتى إذا تم تشقق الجهاز أو تم الاستيلاء عليه جسديا. تشير قيمة الصفر إلى أن المفتاح لن يتم إعادة إنشائه.

خيار -o

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

منفذ -p

يحدد المنفذ الذي يستمع إليه الخادم للاتصالات (افتراضي 22). خيارات المنفذ المتعددة مسموح بها. يتم تجاهل المنافذ المحددة في ملف التكوين عند تحديد منفذ سطر أوامر.

-q

الوضع الهادئ. يتم إرسال أي شيء إلى سجل النظام. عادةً يتم تسجيل بداية كل اتصال وتوثيقه وإنهائه.

-t

وضع الاختبار. تحقق فقط من صحة ملف التكوين وعقلانية المفاتيح. هذا مفيد لتحديث sshd بشكل موثوق حيث قد تتغير خيارات التكوين.

لو لين

يتم استخدام هذا الخيار لتحديد حجم الحقل في بنية utmp التي تحمل اسم المضيف البعيد. إذا كان اسم المضيف الذي تم حله أطول من len ، فسيتم استخدام القيمة العشرية المنقطية بدلاً من ذلك. يسمح ذلك للمضيفين الذين لديهم أسماء مضيفات طويلة جدًا تتجاوز هذا الحقل حتى يتم التعرف عليها بشكل فريد. تحديد - u0 يشير إلى أنه يجب وضع العناوين العشرية المنقطية فقط في ملف utmp. - يتم أيضًا استخدام u0 لمنع sshd من تقديم طلبات DNS ما لم تتطلب آلية المصادقة أو التهيئة ذلك. تشتمل آليات المصادقة التي قد تتطلب DNS على RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication واستخدام خيار من = pattern-list في ملف مفتاح. تتضمن خيارات التكوين التي تتطلب DNS استخدام نمط USER @ HOST في AllowUsers أو DenyUsers

عند تحديد هذا الخيار لن يتم فصل sshd ولا يصبح خفي. هذا يسمح بسهولة مراقبة sshd

-4

تفرض sshd استخدام عناوين IPv4 فقط.

-6

تفرض sshd استخدام عناوين IPv6 فقط.

ملف الضبط

sshd يقرأ بيانات التكوين من / etc / ssh / sshd_config (أو الملف المحدد بـ - و في سطر الأوامر). يتم وصف تنسيق الملف وخيارات التكوين في sshd_config5.

عملية تسجيل الدخول

عندما يقوم مستخدم بتسجيل الدخول بنجاح ، يقوم sshd بما يلي:

  1. إذا كان تسجيل الدخول على tty ولم يتم تحديد أي أمر ، قم بطباعة آخر وقت لتسجيل الدخول و / etc / motd (ما لم يتم منعه في ملف التكوين أو بواسطة $ HOME / .hushlogin راجع قسم Sx FILES).
  2. إذا كان تسجيل الدخول على tty ، سجّل وقت تسجيل الدخول.
  3. الشيكات / الخ / nologin إذا كان موجودًا ، قم بطباعة المحتويات والإقالات (ما لم يكن الجذر).
  4. التغييرات للتشغيل مع امتيازات المستخدم العادية.
  5. يعين البيئة الأساسية.
  6. يقرأ $ HOME / .ssh / environment إذا كان موجودًا ويسمح للمستخدمين بتغيير بيئتهم. راجع الخيار PermitUserEnvironment في sshd_config5.
  7. التغييرات على دليل المستخدم الرئيسي.
  8. في حالة وجود $ HOME / .ssh / rc ، يتم تشغيلها ؛ في حالة وجود / etc / ssh / sshrc ، يتم تشغيلها ؛ وإلا يدير xauth. يتم إعطاء ملفات `` rc '' بروتوكول المصادقة X11 وملف تعريف الارتباط في الإدخال القياسي.
  9. يشغل shell أو الأمر الخاص بالمستخدم.

تنسيق ملف Authorized_Keys

$ HOME / .ssh / authorized_keys هو الملف الافتراضي الذي يسرد المفاتيح العامة المسموح بها لمصادقة RSA في الإصدار 1 من البروتوكول ولمصادقة المفتاح العمومي (PubkeyAuthentication) في إصدار البروتوكول 2. قد يتم استخدام AuthorizedKeysFile لتحديد ملف بديل.

يحتوي كل سطر من الملف على مفتاح واحد (يتم تجاهل الأسطر الفارغة والخطوط التي تبدأ بـ '#' كتعليقات). يتكون كل مفتاح RSA العمومي من الحقول التالية ، مفصولة بمسافات: الخيارات ، البتات ، الأس ، المعامل ، التعليق. يتكون كل مفتاح عمومي من الإصدار الثاني من البروتوكول من: keytype ، keytype ، base64 keyoded ، comment. حقل الخيارات اختياري. يتم تحديد وجودها بواسطة ما إذا كان السطر يبدأ برقم أم لا (لا يبدأ حقل الخيارات مطلقًا برقم). تعطي الحقول bits و exponent و modulus والتعليق مفتاح RSA لإصدار البروتوكول 1 ؛ لا يُستخدم حقل التعليق لأي شيء (ولكن قد يكون مناسبًا للمستخدم لتحديد المفتاح). بالنسبة للإصدار البرمجي 2 ، فإن النوع keytype هو `` ssh-dss '' أو `` ssh-rsa ''

لاحظ أن الخطوط في هذا الملف تكون عادةً عدة مئات بايت (بسبب حجم ترميز المفتاح العمومي). أنت لا تريد كتابتها في؛ بدلاً من ذلك ، انسخ id.dsa.pub identity.pub أو ملف id_rsa.pub وقم بتحريره.

يفرض sshd حدًا أدنى لحجم معامل مفتاح RSA لمفاتيح البروتوكول 1 والمفتاح 2 من 768 بت.

تتكون الخيارات (إن وجدت) من مواصفات خيار مفصولة بفواصل. لا يُسمح بوجود مسافات ، ما عدا ضمن علامات اقتباس مزدوجة. يتم دعم مواصفات الخيارات التالية (لاحظ أن الكلمات الرئيسية الاختيارية غير حساسة لحالة الأحرف):

من = نمط قائمة

يحدد أنه بالإضافة إلى مصادقة المفتاح العام ، يجب أن يكون الاسم الأساسي للمضيف البعيد موجودًا في قائمة الأنماط المفصولة بفواصل (`* 'و`؟' بمثابة أحرف البدل). قد تحتوي القائمة أيضًا على أنماط تم إبطالها عن طريق البادئة بعلامة `! . إذا تطابق اسم المضيف الأساسي مع نمط متوقف ، فلن يتم قبول المفتاح. الغرض من هذا الخيار هو زيادة الأمان اختياريًا: لا تثق مصادقة المفتاح العمومي بنفسها في الشبكة أو خوادم الأسماء أو أي شيء (ولكن المفتاح) ؛ ومع ذلك ، إذا قام شخص ما بسرقة المفتاح بشكل ما ، فإن المفتاح يسمح لدخيل بالدخول من أي مكان في العالم. هذا الخيار الإضافي يجعل استخدام مفتاح مسروق أكثر صعوبة (يجب أن يتم اختراق خوادم الأسماء و / أو أجهزة التوجيه بالإضافة إلى المفتاح فقط).

القيادة = الأمر

يحدد أن الأمر يتم تنفيذه عند استخدام هذا المفتاح للمصادقة. يتم تجاهل الأمر الموفر من قبل المستخدم (إن وجد). يتم تشغيل الأمر على pty إذا طلب العميل pty؛ خلاف ذلك يتم تشغيله دون توتي. إذا كانت هناك حاجة إلى قناة نظيفة ذات 8 بت ، يجب على المرء ألا يطلب مبلغًا pty أو أن يحدد مبلغًا لا يمكن إدراجه في الأمر عن طريق اقتباسه بخط مائل عكسي. قد يكون هذا الخيار مفيدًا لتقييد بعض المفاتيح العامة لتنفيذ عملية محددة فقط. قد يكون أحد الأمثلة مفتاحًا يسمح بالنسخ الاحتياطي عن بُعد ولكن لا شيء آخر. لاحظ أنه قد يحدد العميل TCP / IP و / أو إعادة توجيه X11 ما لم تكن محظورة صراحةً. لاحظ أن هذا الخيار ينطبق على تنفيذ الأوامر أو الأوامر أو النظام الفرعي.

البيئة = NAME = قيمة

يحدد أنه يجب إضافة السلسلة إلى البيئة عند تسجيل الدخول باستخدام هذا المفتاح. تحدد متغيرات البيئة التي تم تعيينها بهذه الطريقة قيم البيئة الافتراضية الأخرى. يسمح بخيارات متعددة من هذا النوع. يتم تعطيل معالجة البيئة بشكل افتراضي ويتم التحكم فيها من خلال خيار PermitUserEnvironment . يتم تعطيل هذا الخيار تلقائيًا في حالة تمكين UseLogin .

عدم ميناء الشحن

يمنع إعادة توجيه TCP / IP عند استخدام هذا المفتاح للمصادقة. أي طلبات إعادة توجيه المنفذ من قبل العميل ستقوم بإرجاع خطأ. يمكن استخدام هذا ، على سبيل المثال ، فيما يتعلق بخيار الأمر .

عدم X11 إعادة توجيه

يمنع إعادة توجيه X11 عند استخدام هذا المفتاح للمصادقة. أي طلبات إعادة توجيه X11 من قبل العميل ستقوم بإرجاع خطأ.

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

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

عدم بي تي واي

يمنع تخصيص tty (سوف يفشل طلب تخصيص pty).

permitopen = منفذ المضيف

الحد من إعادة توجيه المنفذ المحلي `` ssh -L '' بحيث قد يتصل فقط بالمضيف والمنفذ المحددين. يمكن تحديد عناوين IPv6 ببناء بديل: host / port يمكن تطبيق خيارات permopen متعددة مفصولة بفواصل. لا يتم تنفيذ مطابقة النمط على أسماء المضيفات المحددة ، يجب أن تكون نطاقات أو عناوين حرفية.

أمثلة

1024 33 12121 ... 312314325 ylo@foo.bar

from = "*. niksula.hut.fi،! pc.niksula.hut.fi" 1024 35 23 ... 2334 ylo @ niksula

command = "dump / home"، no-pty، no-port-forwarding 1024 33 23 ... 2323 backup.hut.fi

allowopen = "10.2.1.55:80" ، تصريح = "10.2.1.56:25" 1024 33 23 ... 2323

Ssh_Known_Hosts تنسيق الملف

تحتوي الملفات / etc / ssh / ssh_known_hosts و $ HOME / .ssh / known_hosts على مفاتيح عامة للمضيف لكافة المضيفات المعروفة. يجب أن يقوم المسئول بإعداد الملف العام (اختياري) ، ويتم الاحتفاظ بالملف لكل مستخدم تلقائيًا: عندما يتصل المستخدم من مضيف غير معروف ، تتم إضافة مفتاحه إلى ملف لكل مستخدم.

يحتوي كل سطر في هذه الملفات على الحقول التالية: hostnames، bits، exponent، modulus، comment. يتم فصل الحقول بمسافات.

أسماء المضيف هي قائمة مفصولة بفواصل ('*' و '؟' بمثابة أحرف البدل)؛ يتم مطابقة كل نمط ، بدوره ، مع اسم المضيف الأساسي (عند مصادقة عميل) أو ضد الاسم المقدم من قبل المستخدم (عند مصادقة خادم). قد يسبق النمط أيضًا `! للإشارة إلى النفي: إذا كان اسم المضيف يتطابق مع نمط تالف ، فإنه لا يتم قبوله (بهذا الخط) حتى إذا كان يطابق نمطًا آخر على الخط.

تؤخذ البتات ، الأس ، والمعامل مباشرة من مفتاح المضيف RSA ؛ يمكن الحصول عليها ، على سبيل المثال ، من /etc/ssh/ssh_host_key.pub يستمر حقل التعليق الاختياري في نهاية السطر ، ولا يُستخدم.

يتم تجاهل الأسطر التي تبدأ بـ `# 'والخطوط الفارغة كتعليقات.

عند إجراء مصادقة المضيف ، يتم قبول المصادقة إذا كان أي سطر مطابق يحتوي على المفتاح المناسب. ومن ثم يجوز (ولكن ليس موصى به) أن يكون هناك عدة أسطر أو مفاتيح مضيف مختلفة لنفس الأسماء. سيحدث هذا حتمًا عندما يتم وضع أشكال قصيرة من أسماء المضيف من نطاقات مختلفة في الملف. من المحتمل أن تحتوي الملفات على معلومات متعارضة ؛ يتم قبول المصادقة في حالة العثور على معلومات صالحة من أي ملف.

لاحظ أن الخطوط الموجودة في هذه الملفات تكون في العادة مئات الأحرف ، ولا تريد بالتأكيد كتابة مفاتيح المضيف يدويًا. بدلاً من ذلك ، قم بإنشائها بواسطة برنامج نصي أو عن طريق أخذ /etc/ssh/ssh_host_key.pub وإضافة أسماء المضيفين في المقدمة.

أمثلة

closenet، ...، 130.233.208.41 1024 37 159 ... 93 closenet.hut.fi cvs.openbsd.org، 199.185.137.3 ssh-rsa AAAA1234 ..... =

أنظر أيضا

scp (1)، sftp (1)، ssh (1)، ssh-add1، ssh-agent1، ssh-keygen1، login.conf5، moduli (5)، sshd_config5، sftp-server8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "SSH Protocol Architecture" draft-ietf-secsh-architecture-12.txt January 2002 work in progress material

M. Friedl N. Provos WA Simpson "Diffie-Hellman Group Exchange for the SSH Transport Layer Protocol" draft-ietf-secsh-dh-group-exchange-02.txt January 2002 work in progress material

هام: استخدم الأمر man ( ٪ man ) لمعرفة كيفية استخدام أمر ما على جهاز الكمبيوتر الخاص بك.