ssh — عميل تسجيل الدخول عن بعد OpenSSH
ملخص
ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J destination] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd]
[-o option] [-P tag] [-p port] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command [argument ...]]
ssh [-Q query_option]
الوصف
ssh (عميل SSH) هو برنامج لتسجيل الدخول إلى جهاز بعيد ولتنفيذ الأوامر على جهاز بعيد. وهو يهدف إلى توفير اتصالات مشفرة وآمنة بين مضيفين غير موثوق بهما عبر شبكة غير آمنة. يمكن أيضًا توجيه اتصالات X11، ومنافذ TCP التعسفية، ومآخذ التوصيل Unix عبر القناة الآمنة.
يقوم ssh بالاتصال وتسجيل الدخول إلى الوجهة المحددة، والتي يمكن تحديدها إما على أنها [user@]hostname أو URI بالشكل ssh://[user@]hostname[:port]. يجب على المستخدم إثبات هويته للجهاز البعيد باستخدام إحدى الطرق (انظر أدناه).
إذا تم تحديد أمر، فسيتم تنفيذه على المضيف البعيد بدلاً من shell تسجيل الدخول. يمكن تحديد سطر أوامر كامل كأمر، أو يمكن أن يحتوي على وسيطات إضافية. إذا تم توفيره، فسيتم إلحاق الوسيطات بالأمر، مفصولة بمسافات، قبل إرسالها إلى الخادم لتنفيذها.
الخيارات هي كما يلي:
-4 يجبر ssh على استخدام عناوين IPv4 فقط.
-6 يجبر ssh على استخدام عناوين IPv6 فقط.
-A يتيح إعادة توجيه الاتصالات من وكيل مصادقة مثل ssh-agent(1). يمكن أيضًا تحديد ذلك على أساس لكل مضيف في ملف التكوين.
يجب تمكين إعادة توجيه الوكيل بحذر. يمكن للمستخدمين الذين لديهم القدرة على تجاوز أذونات الملفات على المضيف البعيد (لمأخذ التوصيل الخاص بالوكيل) الوصول إلى الوكيل المحلي من خلال الاتصال المعاد توجيهه. لا يمكن للمهاجم الحصول على مواد المفاتيح من الوكيل، ومع ذلك، يمكنه إجراء عمليات على المفاتيح التي تمكنه من المصادقة باستخدام الهويات المحملة في الوكيل. قد يكون البديل الأكثر أمانًا هو استخدام مضيف وسيط (انظر -J).
-a يعطل إعادة توجيه اتصال وكيل المصادقة.
-B bind_interface
اربط بعنوان bind_interface قبل محاولة الاتصال بالوجهة. هذا مفيد فقط على الأنظمة التي تحتوي على أكثر من عنوان واحد.
-b bind_address
استخدم bind_address على الجهاز المحلي كعنوان مصدر للاتصال. هذا مفيد فقط على الأنظمة التي تحتوي على أكثر من عنوان واحد.
-C يطلب ضغط جميع البيانات (بما في ذلك stdin و stdout و stderr والبيانات الخاصة باتصالات X11 و TCP و Unix-domain). خوارزمية الضغط هي نفسها المستخدمة بواسطة [gzip]({filename}../../gzip)(1). الضغط مرغوب فيه على خطوط المودم والاتصالات البطيئة الأخرى، ولكنه سيؤدي فقط إلى إبطاء الأمور على الشبكات السريعة. يمكن تعيين القيمة الافتراضية على أساس كل مضيف في ملفات التكوين؛ راجع خيار الضغط في ssh_config(5) لمزيد من المعلومات.
-c cipher_spec
يحدد مواصفات التشفير لتشفير الجلسة. cipher_spec هي قائمة مفصولة بفواصل من التشفيرات مرتبة حسب الأولوية. راجع الكلمة الأساسية Ciphers في ssh_config(5) للحصول على مزيد من المعلومات.
-D [bind_address:]port
يحدد منفذ إعادة توجيه التطبيقات "الديناميكي" المحلي. يعمل هذا عن طريق تخصيص مقبس للاستماع إلى المنفذ على الجانب المحلي، مع إمكانية ربطه اختياريًا بالعنوان المحدد. في كل مرة يتم فيها إجراء اتصال بهذا المنفذ، يتم إعادة توجيه الاتصال عبر القناة الآمنة، ثم يتم استخدام بروتوكول التطبيق لتحديد مكان الاتصال به من الجهاز البعيد. يتم دعم بروتوكولي SOCKS4 و SOCKS5 حاليًا، وسيعمل ssh كخادم SOCKS. يمكن للمستخدم الجذر فقط إعادة توجيه المنافذ المتميزة. يمكن أيضًا تحديد عمليات إعادة توجيه المنافذ الديناميكية في ملف التكوين.
يمكن تحديد عناوين IPv6 عن طريق إحاطة العنوان بأقواس مربعة. يمكن للمستخدم الجذر فقط إعادة توجيه المنافذ المتميزة. بشكل افتراضي، يتم ربط المنفذ المحلي وفقًا لإعداد GatewayPorts. ومع ذلك، يمكن استخدام عنوان bind_address صريح لربط الاتصال بعنوان معين. يشير عنوان bind_address "localhost" إلى أنه يجب ربط منفذ الاستماع للاستخدام المحلي فقط، بينما يشير العنوان الفارغ أو '*' إلى أنه يجب أن يكون المنفذ متاحًا من جميع الواجهات.
-E log_file
ألحق سجلات التصحيح بـ log_file بدلاً من الخطأ القياسي.
-e escape_char
يحدد حرف الهروب للجلسات التي تحتوي على pty (افتراضيًا: '\~'). لا يتم التعرف على حرف الهروب إلا في بداية السطر. حرف الهروب متبوعًا بنقطة ('.') يغلق الاتصال؛ ومتبوعًا بـ control-Z يعلق الاتصال؛ ومتبوعًا بنفسه يرسل حرف الهروب مرة واحدة. يؤدي تعيين الحرف على "none" إلى تعطيل أي عمليات هروب ويجعل الجلسة شفافة تمامًا.
-F configfile
يحدد ملف تكوين بديل لكل مستخدم. إذا تم إعطاء ملف تكوين في سطر الأوامر، فسيتم تجاهل ملف التكوين على مستوى النظام (/etc/ssh/ssh_config). القيمة الافتراضية لملف التكوين لكل مستخدم هي ~/.ssh/config. إذا تم تعيينه على "none"، فلن يتم قراءة أي ملفات تكوين.
-f يطلب من ssh الانتقال إلى الخلفية مباشرة قبل تنفيذ الأمر. هذا مفيد إذا كان ssh سيطلب كلمات المرور أو العبارات السرية، ولكن المستخدم يريد أن يكون في الخلفية. هذا يعني -n. الطريقة الموصى بها لبدء برامج X11 في موقع بعيد هي باستخدام شيء مثل ssh -f host xterm.
إذا تم تعيين خيار التكوين ExitOnForwardFailure على "نعم"، فسيقوم العميل الذي تم تشغيله باستخدام -f بالانتظار حتى يتم إنشاء جميع عمليات إعادة توجيه المنافذ عن بُعد بنجاح قبل الانتقال إلى الخلفية. راجع وصف ForkAfterAuthentication في ssh_config(5) للحصول على التفاصيل.
-G: يتسبب في أن يقوم `ssh` بطباعة التكوين الخاص به بعد تقييم كتل `Host` و `Match` ثم يخرج.
-g: يسمح للمضيفين البعيدين بالاتصال بمنافذ إعادة التوجيه المحلية. إذا تم استخدامه في اتصال متعدد، فيجب تحديد هذا الخيار في العملية الرئيسية.
-I pkcs11: يحدد مكتبة PKCS#11 المشتركة التي يجب أن يستخدمها `ssh` للاتصال برمز PKCS#11 الذي يوفر مفاتيح لمصادقة المستخدم.
-i identity_file: يحدد ملفًا يتم قراءة الهوية (المفتاح الخاص) المستخدم للمصادقة بالمفتاح العام منه. يمكنك أيضًا تحديد ملف مفتاح عام لاستخدام المفتاح الخاص المقابل الذي يتم تحميله في `ssh-agent(1)` عندما لا يكون ملف المفتاح الخاص موجودًا محليًا. الافتراضي هو `~/.ssh/id_rsa` و `~/.ssh/id_ecdsa` و `~/.ssh/id_ecdsa_sk` و `~/.ssh/id_ed25519` و `~/.ssh/id_ed25519_sk`. يمكن أيضًا تحديد ملفات الهوية على أساس كل مضيف في ملف التكوين. من الممكن وجود خيارات `-i` متعددة (وهويات متعددة محددة في ملفات التكوين). إذا لم يتم تحديد أي شهادات بشكل صريح بواسطة التوجيه `CertificateFile`، فسيحاول `ssh` أيضًا تحميل معلومات الشهادة من اسم الملف الذي يتم الحصول عليه عن طريق إضافة `-cert.pub` إلى أسماء ملفات الهوية.
-J destination: اتصل بالمضيف الهدف عن طريق إجراء اتصال `ssh` أولاً بالمضيف الوسيط الموصوف بواسطة `destination` ثم إنشاء إعادة توجيه TCP إلى الوجهة النهائية من هناك. يمكن تحديد عمليات قفز متعددة مفصولة بأحرف فاصلة. يمكن تحديد عناوين IPv6 عن طريق وضع العنوان بين قوسين مربعين. هذا هو اختصار لتحديد توجيه `ProxyJump` في ملف التكوين. لاحظ أن توجيهات التكوين التي يتم توفيرها في سطر الأوامر تنطبق بشكل عام على المضيف الوجهة وليس أي مضيف وسيط محدد. استخدم `~/.ssh/config` لتحديد التكوين للمضيفين الوسيطين.
-K: يمكّن المصادقة المستندة إلى GSSAPI وتمرير (تفويض) بيانات اعتماد GSSAPI إلى الخادم.
-k: يعطل تمرير (تفويض) بيانات اعتماد GSSAPI إلى الخادم.
-L [bind_address:]port:host:hostport
-L [bind_address:]port:remote_socket
-L local_socket:host:hostport
-L local_socket:remote_socket:
يحدد أنه سيتم إعادة توجيه الاتصالات إلى منفذ TCP أو مقبس Unix المحدد على المضيف المحلي (العميل) إلى المضيف والمنفذ أو مقبس Unix المحدد على الجانب البعيد. يعمل هذا عن طريق تخصيص مقبس للاستماع إما إلى منفذ TCP على الجانب المحلي، مع ربطه اختياريًا بالعنوان المحدد `bind_address`، أو إلى مقبس Unix. عندما يتم إجراء اتصال بالمنفذ المحلي أو المقبس، يتم تمرير الاتصال عبر القناة الآمنة، ويتم إجراء اتصال إما بمنفذ المضيف `hostport` أو بمقبس Unix `remote_socket` من الجهاز البعيد.
يمكن تحديد عمليات إعادة توجيه المنافذ أيضًا في ملف التكوين. يمكن للمستخدم الخارق (superuser) فقط إعادة توجيه المنافذ المميزة. يمكن تحديد عناوين IPv6 عن طريق وضع العنوان بين أقواس مربعة.
بشكل افتراضي، يتم ربط المنفذ المحلي وفقًا لإعداد GatewayPorts. ومع ذلك، يمكن استخدام bind\_address صريح لربط الاتصال بعنوان محدد. يشير bind\_address الخاص بـ "localhost" إلى أنه يجب ربط منفذ الاستماع للاستخدام المحلي فقط، بينما يشير العنوان الفارغ أو '\*' إلى أنه يجب أن يكون المنفذ متاحًا من جميع الواجهات.
-l login_name
يحدد المستخدم الذي سيتم تسجيل الدخول إليه على الجهاز البعيد. يمكن أيضًا تحديده على أساس لكل مضيف في ملف التكوين.
-M
يضع عميل ssh في "وضع رئيسي" لمشاركة الاتصال. يؤدي استخدام خيارات -M متعددة إلى وضع ssh في "وضع رئيسي" ولكن مع اشتراط التأكيد باستخدام ssh-askpass(1) قبل كل عملية تغير حالة تعدد الإرسال (على سبيل المثال، فتح جلسة جديدة). راجع وصف ControlMaster في ssh_config(5) للحصول على التفاصيل.
-m mac_spec
قائمة مفصولة بفواصل لخوارزميات MAC (رمز مصادقة الرسائل)، محددة بترتيب الأولوية. راجع الكلمة الأساسية MACs في ssh_config(5) لمزيد من المعلومات.
-N
لا تنفذ أمرًا عن بعد. هذا مفيد لمجرد إعادة توجيه المنافذ. راجع وصف SessionType في ssh_config(5) للحصول على التفاصيل.
-n
يعيد توجيه stdin من /dev/null (في الواقع، يمنع القراءة من stdin). يجب استخدامه عند تشغيل ssh في الخلفية. خدعة شائعة هي استخدام هذا لتشغيل برامج X11 على جهاز بعيد. على سبيل المثال، سيقوم ssh -n shadows.cs.hut.fi emacs & بتشغيل emacs على shadows.cs.hut.fi، وسيتم إعادة توجيه اتصال X11 تلقائيًا عبر قناة مشفرة. سيتم وضع برنامج ssh في الخلفية. (لا يعمل هذا إذا كان ssh بحاجة إلى طلب كلمة مرور أو عبارة مرور؛ انظر أيضًا الخيار -f). راجع وصف StdinNull في ssh_config(5) للحصول على التفاصيل.
-O ctl_cmd
تحكم في عملية رئيسية متعددة الإرسال نشطة. عند تحديد خيار -O، يتم تفسير وسيطة ctl\_cmd وإرسالها إلى العملية الرئيسية. الأوامر الصالحة هي: "check" (تحقق من تشغيل العملية الرئيسية)، و "forward" (اطلب عمليات إعادة التوجيه دون تنفيذ الأمر)، و "cancel" (إلغاء عمليات إعادة التوجيه)، و "proxy" (الاتصال بعملية رئيسية متعددة الإرسال قيد التشغيل في وضع الوكيل)، و "exit" (اطلب من العملية الرئيسية الخروج)، و "stop" (اطلب من العملية الرئيسية التوقف عن قبول طلبات تعدد الإرسال الإضافية).
-o option
يمكن استخدامه لإعطاء خيارات بالتنسيق المستخدم في ملف التكوين. هذا مفيد لتحديد الخيارات التي لا يوجد لها علامة سطر أوامر منفصلة. للحصول على التفاصيل الكاملة حول الخيارات المدرجة أدناه وقيمها المحتملة، راجع ssh_config(5).
إضافة مفاتيح إلى الوكيل
عائلة العناوين
وضع الدُفعات
عنوان الربط
واجهة الربط
خوارزميات توقيع CA
النطاقات القياسية
التحقق من الصحة المحلي الاحتياطي
التحقق من صحة اسم المضيف
الحد الأقصى لعدد النقاط في التحقق من الصحة
النطاقات المسموح بها لـ CNAME
ملف الشهادة
مهلة القناة
التحقق من عنوان المضيف
تشفيرات
مسح جميع عمليات إعادة التوجيه
ضغط
مهلة الاتصال
عدد محاولات الاتصال
التحكم الرئيسي
مسار التحكم
استمرار التحكم
إعادة التوجيه الديناميكي
تمكين إلغاء تفعيل سطر الأوامر
تمكين توقيع مفاتيح SSH
حرف الإلغاء
الخروج عند فشل إعادة التوجيه
تجزئة بصمة الإصبع
التفرع بعد المصادقة
إعادة توجيه الوكيل
إعادة توجيه X11
مهلة إعادة توجيه X11
عناصر موثوق بها لإعادة توجيه X11
المصادقة باستخدام GSSAPI
تبادل مفاتيح GSSAPI
هوية عميل GSSAPI
تفويض بيانات اعتماد GSSAPI
خوارزميات تبادل مفاتيح GSSAPI
يجبر تجديد GSSAPI على إعادة تبادل المفاتيح
هوية خادم GSSAPI
الثقة في DNS لـ GSSAPI
منافذ البوابة
ملف KnownHosts العام
تجزئة KnownHosts
المضيف
خوارزميات مفاتيح المضيف
اسم مستعار لمفتاح المضيف
خوارزميات مقبولة قائمة على المضيف
المصادقة القائمة على المضيف
اسم المضيف
جودة خدمة IP
المفاتيح فقط
وكيل الهوية
ملف الهوية
تجاهل غير المعروف
تضمين
المصادقة التفاعلية للوحة المفاتيح
أجهزة المصادقة التفاعلية للوحة المفاتيح
خوارزميات تبادل المفاتيح
أمر KnownHosts
أمر محلي
إعادة التوجيه المحلي
مستوى التسجيل
تسجيل مطول
رموز التحقق من الرسائل
لا يتم إجراء مصادقة للمضيف لـ localhost
عدد مرات مطالبة كلمة المرور
إخفاء توقيت الضغط على المفاتيح
مزود PKCS11
المصادقة باستخدام كلمة المرور
السماح بالأمر المحلي
السماح بالفتح عن بعد
المنفذ
طرق المصادقة المفضلة
أمر الوكيل
القفز عبر الوكيل
استخدام الوكيل مع تمرير بيانات الاعتماد عبر ملف
الخوارزميات المقبولة لتوقيع المفاتيح العامة
المصادقة باستخدام المفاتيح العامة
حد إعادة تبادل المفاتيح
أمر عن بعد
إعادة التوجيه عن بعد
طلب محطة طرفية
حجم RSA المطلوب
مفاتيح المضيف الملغاة
مزود مفتاح الأمان
إرسال متغيرات البيئة
أقصى عدد من عمليات التحقق من خادم الاتصال
فترة التحقق من خادم الاتصال
نوع الجلسة
تعيين متغيرات البيئة
إدخال فارغ
قناع الربط المحلي لتدفق البيانات
إلغاء ربط تدفق البيانات المحلي
التحقق الصارم من مفتاح المضيف
منشأة Syslog
TCP KeepAlive
علامة
نفق
جهاز النفق
تحديث مفاتيح المضيف
المستخدم
ملف المستخدم المعروف للمضيف
التحقق من مفتاح المضيف باستخدام DNS
مفتاح المضيف المرئي
موقع XAuth
-P tag حدد اسم علامة يمكن استخدامه لتحديد التكوين في ssh_config(5). راجع كلمات المفتاح "Tag" و "Match" في ssh_config(5) لمزيد من المعلومات.
-p port المنفذ المراد الاتصال به على المضيف البعيد. يمكن تحديد ذلك على أساس لكل مضيف في ملف التكوين.
-Q query_option يقوم بالاستعلام عن الخوارزميات المدعومة بواسطة أحد الميزات التالية: cipher (التشفيرات المتماثلة المدعومة)، cipher-auth (التشفيرات المتماثلة المدعومة التي تدعم التشفير المصادق عليه)، help (شروط الاستعلام المدعومة للاستخدام مع علامة -Q)، mac (رموز التحقق من سلامة الرسائل المدعومة)، kex (خوارزميات تبادل المفاتيح)، kex-gss (خوارزميات تبادل مفاتيح GSSAPI)، key (أنواع المفاتيح)، key-ca-sign (خوارزميات توقيع CA صالحة للشهادات)، key-cert (أنواع مفاتيح الشهادات)، key-plain (أنواع المفاتيح غير الشهادات)، key-sig (جميع أنواع المفاتيح وخوارزميات التوقيع)، protocol-version (إصدارات بروتوكول SSH المدعومة)، و sig (خوارزميات التوقيع المدعومة). بدلاً من ذلك، يمكن استخدام أي كلمة مفتاح من ssh_config(5) أو sshd_config(5) التي تأخذ قائمة خوارزميات كاسم مستعار للاختصار المقابل.
-q وضع هادئ. يتسبب في كتم معظم رسائل التحذير والتشخيص.
-R [عنوان_الربط:]المنفذ:المضيف:منفذ_المضيف
-R [عنوان_الربط:]المنفذ:المقبس_المحلي
-R مقبس_بعيد:المضيف:منفذ_المضيف
-R مقبس_بعيد:مقبس_محلي
-R [عنوان_الربط:]المنفذ
يحدد أن الاتصالات بالمنفذ TCP أو مقبس Unix المحدد على المضيف البعيد يجب إعادة توجيهها إلى الجانب المحلي.
يعمل هذا عن طريق تخصيص مقبس للاستماع إما إلى منفذ TCP أو إلى مقبس Unix على الجانب البعيد. في كل مرة يتم فيها إجراء اتصال بهذا المنفذ أو مقبس Unix، يتم إعادة توجيه الاتصال عبر القناة الآمنة، ويتم إجراء اتصال من الجهاز المحلي إما إلى وجهة محددة بشكل صريح بواسطة المضيف والمنفذ، أو مقبس_محلي، أو، إذا لم يتم تحديد وجهة صريحة، فسيعمل ssh بمثابة وكيل SOCKS 4/5 ويعيد توجيه الاتصالات إلى الوجهات التي يطلبها عميل SOCKS البعيد.
يمكن أيضًا تحديد إعادة توجيه المنافذ في ملف التكوين. لا يمكن إعادة توجيه المنافذ المميزة إلا عند تسجيل الدخول كمستخدم جذر على الجهاز البعيد. يمكن تحديد عناوين IPv6 عن طريق وضع العنوان بين قوسين مربعين.
افتراضيًا، سيتم ربط مقابس الاستماع TCP على الخادم بواجهة التكرار فقط. يمكن تجاوز ذلك عن طريق تحديد عنوان_الربط. يشير عنوان_الربط الفارغ، أو العنوان '*'، إلى أنه يجب أن يستمع المقبس البعيد على جميع الواجهات. لن ينجح تحديد عنوان_الربط البعيد إلا إذا تم تمكين خيار GatewayPorts الخاص بالخادم (راجع sshd_config(5)).
إذا كانت وسيطة المنفذ هي '0'، فسيتم تخصيص منفذ الاستماع ديناميكيًا على الخادم وسيتم الإبلاغ عنه للعميل في وقت التشغيل. عند استخدامه مع الخيار -O forward، سيتم طباعة المنفذ المخصص إلى الإخراج القياسي.
-S مسار_التحكم
يحدد موقع مقبس التحكم لمشاركة الاتصال، أو السلسلة "none" لتعطيل مشاركة الاتصال. راجع وصف ControlPath و ControlMaster في ssh_config(5) للحصول على التفاصيل.
-s يمكن استخدامه لطلب استدعاء نظام فرعي على النظام البعيد. تسهل الأنظمة الفرعية استخدام SSH كوسيلة نقل آمنة لتطبيقات أخرى (على سبيل المثال، [sftp]({filename}../../sftp)(1)). يتم تحديد النظام الفرعي كأمر بعيد. راجع وصف SessionType في ssh_config(5) للحصول على التفاصيل.
-T تعطيل تخصيص الطرفية الوهمية.
-t فرض تخصيص الطرفية الوهمية. يمكن استخدامه لتنفيذ برامج قائمة على الشاشة بشكل عشوائي على جهاز بعيد، والتي يمكن أن تكون مفيدة للغاية، على سبيل المثال، عند تنفيذ خدمات القائمة. يؤدي استخدام خيارات -t المتعددة إلى فرض تخصيص الطرفية، حتى إذا لم يكن لدى ssh طرفية محلية.
-V عرض رقم الإصدار والخروج.
-v وضع مطول. يتسبب في طباعة ssh لرسائل التصحيح حول تقدمه. هذا مفيد في تصحيح أخطاء الاتصال والمصادقة ومشكلات التكوين. تزيد خيارات -v المتعددة من الإسهاب. الحد الأقصى هو 3.
-W host:port
يطلب إعادة توجيه الإدخال والإخراج القياسيين على العميل إلى المضيف على المنفذ المحدد عبر القناة الآمنة. يعني هذا الخيار أيضًا -N، و-T، وExitOnForwardFailure وClearAllForwardings، على الرغم من أنه يمكن تجاوز هذه الخيارات في ملف التكوين أو باستخدام خيارات سطر الأوامر -o.
-w local_tun[:remote_tun]
يطلب إعادة توجيه جهاز النفق باستخدام أجهزة tun(4) المحددة بين العميل (local_tun) والخادم (remote_tun).
يمكن تحديد الأجهزة إما بالرقم التعريفي أو باستخدام الكلمة المفتاحية "any"، والتي تستخدم جهاز النفق التالي المتاح. إذا لم يتم تحديد remote_tun، فسيتم تعيينه افتراضيًا إلى "any". راجع أيضًا التوجيهين Tunnel وTunnelDevice في ssh_config(5).
إذا لم يتم تعيين التوجيه Tunnel، فسيتم تعيينه إلى وضع النفق الافتراضي، وهو "point-to-point". إذا كان هناك حاجة إلى وضع إعادة توجيه مختلف، فيجب تحديده قبل استخدام الخيار -w.
-X يقوم بتمكين إعادة توجيه X11. يمكن أيضًا تحديد هذا الخيار على أساس كل مضيف في ملف التكوين.
يجب تمكين إعادة توجيه X11 بحذر. يمكن للمستخدمين الذين لديهم القدرة على تجاوز أذونات الملفات على المضيف البعيد (لقاعدة بيانات تفويض X الخاصة بالمستخدم) الوصول إلى شاشة X11 المحلية عبر الاتصال المعاد توجيهه. قد يتمكن المهاجم بعد ذلك من تنفيذ أنشطة مثل مراقبة ضغطات المفاتيح.
لهذا السبب، تخضع إعادة توجيه X11 لقيود امتداد X11 SECURITY افتراضيًا. راجع الخيار ssh -Y والتوجيه ForwardX11Trusted في ssh_config(5) لمزيد من المعلومات.
(خاص بـ Debian: لا تخضع إعادة توجيه X11 لقيود امتداد X11 SECURITY افتراضيًا، لأن العديد من البرامج تفشل في هذا الوضع حاليًا. قم بتعيين الخيار ForwardX11Trusted إلى "no" لاستعادة السلوك الأصلي. قد يتغير هذا في المستقبل اعتمادًا على التحسينات التي يتم إجراؤها على جانب العميل).
-x يعطل إعادة توجيه X11.
-Y يقوم بتمكين إعادة توجيه X11 الموثوق بها. لا تخضع عمليات إعادة توجيه X11 الموثوق بها لقيود امتداد X11 SECURITY.
(خاص بـ Debian: في التكوين الافتراضي، يكون هذا الخيار مكافئًا للخيار -X، لأن الخيار ForwardX11Trusted يكون افتراضيًا "yes" كما هو موضح أعلاه. قم بتعيين الخيار ForwardX11Trusted إلى "no" لاستعادة السلوك الأصلي. قد يتغير هذا في المستقبل اعتمادًا على التحسينات التي يتم إجراؤها على جانب العميل).
-y إرسال معلومات السجل باستخدام وحدة نظام syslog(3). افتراضيًا، يتم إرسال هذه المعلومات إلى stderr.
يمكن لـ ssh أيضًا الحصول على بيانات التكوين من ملف تكوين خاص بالمستخدم وملف تكوين على مستوى النظام. يتم وصف تنسيق الملف وخيارات التكوين في ssh_config(5).
المصادقة
يدعم عميل OpenSSH SSH بروتوكول SSH 2.
الطرق المتاحة للمصادقة هي: المصادقة القائمة على GSSAPI، والمصادقة القائمة على المضيف، والمصادقة بالمفتاح العام، والمصادقة التفاعلية عن طريق لوحة المفاتيح، والمصادقة عن طريق كلمة المرور. يتم تجربة طرق المصادقة بالترتيب المحدد أعلاه، على الرغم من أنه يمكن استخدام PreferredAuthentications لتغيير الترتيب الافتراضي.
تعمل آلية المصادقة المستندة إلى الجهاز على النحو التالي: إذا كانت الآلة التي يسجل المستخدم منها موجودة في /etc/hosts.equiv أو /etc/ssh/shosts.equiv على الجهاز البعيد، وكان المستخدم ليس مستخدمًا جذريًا (root)، وكانت أسماء المستخدمين متطابقة على كلا الجانبين، أو إذا كانت الملفات ~/.rhosts أو ~/.shosts موجودة في دليل المستخدم الرئيسي على الجهاز البعيد وتحتوي على سطر يتضمن اسم جهاز العميل واسم المستخدم على هذا الجهاز، فسيتم اعتبار المستخدم مؤهلاً لتسجيل الدخول. بالإضافة إلى ذلك، يجب أن يكون الخادم قادرًا على التحقق من مفتاح المضيف الخاص بالعميل (راجع الوصف الخاص بـ /etc/ssh/ssh_known_hosts و ~/.ssh/known_hosts أدناه) حتى يتم السماح بتسجيل الدخول. تعمل طريقة المصادقة هذه على سد الثغرات الأمنية الناتجة عن انتحال عنوان IP، وانتحال نظام أسماء النطاقات (DNS)، وانتحال التوجيه. [ملاحظة للمسؤول: /etc/hosts.equiv و ~/.rhosts، وبروتوكول rlogin/rsh بشكل عام، غير آمنين بطبيعتهما ويجب تعطيلهما إذا كانت الأمان مرغوبًا فيه.]
تعمل المصادقة بالمفتاح العام على النحو التالي: تعتمد هذه الآلية على التشفير بالمفتاح العام، باستخدام أنظمة التشفير التي يتم فيها إجراء التشفير وفك التشفير باستخدام مفاتيح منفصلة، ومن غير العملي اشتقاق مفتاح فك التشفير من مفتاح التشفير. الفكرة هي أن يقوم كل مستخدم بإنشاء زوج مفاتيح عام وخاص لأغراض المصادقة. يعرف الخادم المفتاح العام، ولا يعرف سوى المستخدم المفتاح الخاص. تقوم ssh بتنفيذ بروتوكول المصادقة بالمفتاح العام تلقائيًا، باستخدام أحد خوارزميات ECDSA أو Ed25519 أو RSA.
يحتوي الملف ~/.ssh/authorized_keys على قائمة بالمفاتيح العامة المسموح بها لتسجيل الدخول. عندما يقوم المستخدم بتسجيل الدخول، يخبر برنامج ssh الخادم بالزوج المفتاحي الذي يرغب في استخدامه للمصادقة. يثبت العميل أنه يمتلك الوصول إلى المفتاح الخاص، ويتحقق الخادم من أن المفتاح العام المقابل مصرح له بقبول الحساب.
قد يقوم الخادم بإبلاغ العميل بالأخطاء التي منعت المصادقة بالمفتاح العام من النجاح بعد اكتمال المصادقة باستخدام طريقة أخرى. يمكن عرض هذه الأخطاء عن طريق زيادة مستوى التسجيل إلى DEBUG أو أعلى (على سبيل المثال، باستخدام العلامة -v).
يقوم المستخدم بإنشاء زوج المفاتيح الخاص به عن طريق تشغيل الأمر ssh-keygen(1). يقوم هذا الأمر بتخزين المفتاح الخاص في ~/.ssh/id_ecdsa (ECDSA) أو ~/.ssh/id_ecdsa_sk (ECDSA مستضاف من قبل المصادق) أو ~/.ssh/id_ed25519 (Ed25519) أو ~/.ssh/id_ed25519_sk (Ed25519 مستضاف من قبل المصادق) أو ~/.ssh/id_rsa (RSA)، ويقوم بتخزين المفتاح العام في ~/.ssh/id_ecdsa.pub (ECDSA) أو ~/.ssh/id_ecdsa_sk.pub (ECDSA مستضاف من قبل المصادق) أو ~/.ssh/id_ed25519.pub (Ed25519) أو ~/.ssh/id_ed25519_sk.pub (Ed25519 مستضاف من قبل المصادق) أو ~/.ssh/id_rsa.pub (RSA) في دليل المستخدم الرئيسي. يجب على المستخدم بعد ذلك نسخ المفتاح العام إلى ~/.ssh/authorized_keys في دليل المستخدم الرئيسي على الجهاز البعيد. يتوافق ملف authorized_keys مع ملف ~/.rhosts التقليدي، ويحتوي على مفتاح واحد في كل سطر، على الرغم من أن الأسطر يمكن أن تكون طويلة جدًا. بعد ذلك، يمكن للمستخدم تسجيل الدخول دون الحاجة إلى إدخال كلمة المرور.
تتوفر نسخة مختلفة من المصادقة بالمفتاح العام في شكل مصادقة بالشهادات: بدلاً من مجموعة من المفاتيح العامة/الخاصة، يتم استخدام شهادات موقعة. وهذا له ميزة أنه يمكن استخدام سلطة تصديق موثوقة واحدة بدلاً من العديد من المفاتيح العامة/الخاصة. انظر قسم الشهادات في ssh-keygen(1) لمزيد من المعلومات.
الطريقة الأكثر ملاءمة لاستخدام المصادقة بالمفتاح العام أو الشهادات قد تكون مع وكيل المصادقة. انظر ssh-agent(1) و (اختياريًا) التوجيه AddKeysToAgent في ssh_config(5) لمزيد من المعلومات.
تعمل المصادقة التفاعلية عبر لوحة المفاتيح على النحو التالي: يرسل الخادم نص "تحدي" عشوائي ويطلب استجابة، ربما عدة مرات. تشمل أمثلة المصادقة التفاعلية عبر لوحة المفاتيح مصادقة BSD (انظر login.conf(5)) و PAM (بعض الأنظمة غير OpenBSD).
أخيرًا، إذا فشلت طرق المصادقة الأخرى، يطلب ssh من المستخدم كلمة مرور. يتم إرسال كلمة المرور إلى المضيف البعيد للتحقق؛ ومع ذلك، نظرًا لأن جميع الاتصالات مشفرة، فلا يمكن لأي شخص يستمع إلى الشبكة رؤية كلمة المرور.
يحافظ ssh تلقائيًا على قاعدة بيانات ويتحقق منها تحتوي على معلومات تعريف لجميع المضيفين التي تم استخدامه معها على الإطلاق. يتم تخزين مفاتيح المضيف في ~/.ssh/known_hosts في دليل المستخدم الرئيسي. بالإضافة إلى ذلك، يتم فحص الملف /etc/ssh/ssh_known_hosts تلقائيًا بحثًا عن المضيفين المعروفين. تتم إضافة أي مضيفين جدد تلقائيًا إلى ملف المستخدم. إذا تغير تعريف المضيف على الإطلاق، يحذر ssh من ذلك ويعطل مصادقة كلمة المرور لمنع انتحال الخادم أو هجمات "الرجل في المنتصف"، والتي يمكن استخدامها بخلاف ذلك لتجاوز التشفير. يمكن استخدام الخيار StrictHostKeyChecking للتحكم في عمليات تسجيل الدخول إلى الأجهزة التي لم يتم التعرف على مفتاح المضيف الخاص بها أو تغير.
عندما يتم قبول هوية المستخدم بواسطة الخادم، يقوم الخادم إما بتنفيذ الأمر المحدد في جلسة غير تفاعلية أو، إذا لم يتم تحديد أي أمر، يسجل الدخول إلى الجهاز ويعطي المستخدم واجهة shell عادية كجلسة تفاعلية. سيتم تشفير جميع الاتصالات مع الأمر البعيد أو shell تلقائيًا.
إذا تم طلب جلسة تفاعلية، سيطلب ssh افتراضيًا "طرفية افتراضية" (pty) للجلسات التفاعلية فقط عندما يكون لدى العميل واحدة. يمكن استخدام العلامتين -T و -t لتجاوز هذا السلوك.
إذا تم تخصيص طرفية افتراضية، فيمكن للمستخدم استخدام أحرف الهروب الموضحة أدناه.
إذا لم يتم تخصيص أي طرفية افتراضية، فإن الجلسة شفافة ويمكن استخدامها لنقل بيانات ثنائية بشكل موثوق. على معظم الأنظمة، فإن تعيين حرف الهروب إلى "لا شيء" سيجعل الجلسة شفافة حتى إذا تم استخدام طرفية.
تنتهي الجلسة عند خروج الأمر أو shell على الجهاز البعيد وإغلاق جميع اتصالات X11 و TCP.
أحرف الهروب
عند طلب جهاز طرفي زائف، يدعم ssh عددًا من الوظائف من خلال استخدام حرف هروب.
يمكن إرسال حرف المد (\~) كـ ~~ أو عن طريق وضع حرف آخر بعد المد، بدلاً من الأحرف الموصوفة أدناه. يجب أن يتبع حرف الهروب سطرًا جديدًا دائمًا ليتم تفسيره على أنه خاص. يمكن تغيير حرف الهروب في ملفات التكوين باستخدام توجيه التكوين EscapeChar أو على سطر الأوامر باستخدام الخيار -e.
الأحرف المختصرة المدعومة (بافتراض القيمة الافتراضية ‘\~’):
~. قطع الاتصال.
~^Z تشغيل ssh في الخلفية.
~# عرض قائمة الاتصالات التي تم إعادة توجيهها.
~& تشغيل ssh في الخلفية عند تسجيل الخروج، عند انتظار انتهاء اتصالات إعادة التوجيه/جلسات X11.
~? عرض قائمة أحرف الهروب.
~B إرسال إشارة BREAK إلى النظام البعيد (مفيد فقط إذا كان الطرف الآخر يدعم ذلك).
~C فتح سطر أوامر. يسمح هذا حاليًا بإضافة عمليات إعادة توجيه المنافذ باستخدام الخيارات -L و -R و -D (انظر أعلاه). كما يسمح بإلغاء عمليات إعادة توجيه المنافذ الموجودة باستخدام -KL[bind_address:]port لإعادة توجيه المنافذ المحلية، و -KR[bind_address:]port لإعادة توجيه المنافذ البعيدة، و -KD[bind_address:]port لإعادة توجيه المنافذ الديناميكية. يسمح !command للمستخدم بتشغيل أمر محلي إذا تم تمكين خيار PermitLocalCommand في ssh_config(5). تتوفر مساعدة أساسية باستخدام الخيار -h.
~R طلب إعادة إنشاء مفتاح الاتصال (مفيد فقط إذا كان الطرف الآخر يدعم ذلك).
~V تقليل الإسهاب (LogLevel) عند كتابة الأخطاء إلى stderr.
~v زيادة الإسهاب (LogLevel) عند كتابة الأخطاء إلى stderr.
إعادة توجيه TCP
يمكن تحديد إعادة توجيه اتصالات TCP العشوائية عبر قناة آمنة إما على سطر الأوامر أو في ملف تكوين. أحد التطبيقات المحتملة لإعادة توجيه TCP هو إنشاء اتصال آمن بخادم بريد، حتى إذا كان خادم IRC الذي يتصل به لا يدعم الاتصال المشفر مباشرة. يمكن استخدام هذا لتجاوز جدران الحماية.
في المثال أدناه، نلقي نظرة على تشفير الاتصال لعميل IRC، حتى لو كان خادم IRC الذي يتصل به لا يدعم الاتصال المشفر مباشرة. يعمل هذا على النحو التالي: يتصل المستخدم بالمضيف البعيد باستخدام ssh، مع تحديد المنافذ التي سيتم استخدامها لإعادة توجيه الاتصال. بعد ذلك، من الممكن تشغيل البرنامج محليًا، وسيقوم ssh بتشفير وإعادة توجيه الاتصال إلى الخادم البعيد.
يوضح المثال التالي كيفية إنشاء نفق لجلسة IRC من العميل إلى خادم IRC في “server.example.com”، والانضمام إلى قناة “#users”، والاسم المستعار “pinky”، باستخدام منفذ IRC القياسي، 6667:
$ ssh -f -L 6667:localhost:6667 server.example.com sleep 10
$ irc -c '#users' pinky IRC/127.0.0.1
يقوم الخيار -f بتشغيل ssh في الخلفية، ويتم تحديد الأمر البعيد “sleep 10” للسماح ببعض الوقت (10 ثوانٍ في المثال) لبدء البرنامج الذي سيستخدم النفق. إذا لم يتم إجراء أي اتصالات خلال الوقت المحدد، فسوف يخرج ssh.
إعادة توجيه X11
إذا تم تعيين المتغير ForwardX11 على "نعم" (أو انظر وصف الخيارات -X و -x و -Y أعلاه) وكان المستخدم يستخدم X11 (تم تعيين متغير البيئة DISPLAY)، فسيتم إعادة توجيه الاتصال بشاشة X11 تلقائيًا إلى الجانب البعيد بحيث يتم توجيه أي برامج X11 يتم تشغيلها من shell (أو من سطر الأوامر) عبر القناة المشفرة، ويتم إنشاء الاتصال بخادم X الفعلي من الجهاز المحلي. يجب ألا يقوم المستخدم بتعيين DISPLAY يدويًا.
يمكن تكوين إعادة توجيه اتصالات X11 على سطر الأوامر أو في ملفات التكوين.
ستشير قيمة DISPLAY التي يقوم ssh بتعيينها إلى جهاز الخادم، ولكن برقم شاشة أكبر من صفر. هذا أمر طبيعي، ويحدث ذلك لأن ssh ينشئ "خادم X وكيل" على جهاز الخادم لإعادة توجيه الاتصالات عبر القناة المشفرة.
سيقوم ssh أيضًا بإعداد بيانات Xauthority تلقائيًا على جهاز الخادم. لهذا الغرض، سيقوم بإنشاء ملف تعريف مصادقة عشوائي، وتخزينه في Xauthority على الخادم، والتحقق من أن أي اتصالات يتم إعادة توجيهها تحمل ملف تعريف المصادقة هذا واستبداله بالملف الفعلي عند فتح الاتصال. لا يتم إرسال ملف تعريف المصادقة الفعلي إلى جهاز الخادم (ولا يتم إرسال أي ملفات تعريف مصادقة عبر الشبكة غير المشفرة).
إذا تم تعيين المتغير ForwardAgent على "نعم" (أو انظر وصف الخيارات -A و -a أعلاه) وكان المستخدم يستخدم وكيل مصادقة، فسيتم إعادة توجيه الاتصال بوكيل المصادقة تلقائيًا إلى الجانب البعيد.
التحقق من مفاتيح المضيف
عند الاتصال بخادم للمرة الأولى، يتم عرض بصمة مفتاح عام الخادم للمستخدم (إلا إذا تم تعطيل الخيار StrictHostKeyChecking). يمكن تحديد البصمات باستخدام ssh-keygen(1):
$ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
إذا كانت البصمة معروفة بالفعل، فيمكن مطابقتها وقبول المفتاح أو رفضه. إذا كانت هناك بصمات (MD5) قديمة فقط للخادم، فيمكن استخدام الخيار -E في ssh-keygen(1) لتقليل خوارزمية البصمة لتتوافق مع الخادم.
نظرًا لصعوبة مقارنة مفاتيح المضيف بمجرد النظر إلى سلاسل البصمات، هناك أيضًا دعم لمقارنة مفاتيح المضيف بصريًا، باستخدام فن عشوائي. عن طريق تعيين الخيار VisualHostKey على "نعم"، يتم عرض رسم بياني ASCII صغير في كل تسجيل دخول إلى خادم، سواء كانت الجلسة تفاعلية أم لا. من خلال تعلم النمط الذي ينتجه الخادم المعروف، يمكن للمستخدم بسهولة معرفة أن مفتاح المضيف قد تغير عندما يتم عرض نمط مختلف تمامًا. نظرًا لأن هذه الأنماط ليست غير مبهمة، فإن النمط الذي يبدو مشابهًا للنمط المتذكر يعطي فقط احتمالًا جيدًا بأن يكون مفتاح المضيف هو نفسه، وليس دليلًا قاطعًا.
للحصول على قائمة بالبصمات جنبًا إلى جنب مع فنها العشوائي لجميع المضيفين المعروفين، يمكن استخدام سطر الأوامر التالي:
$ ssh-keygen -lv -f ~/.ssh/known_hosts
إذا كانت البصمة غير معروفة، فهناك طريقة بديلة للتحقق متاحة: بصمات SSH التي تم التحقق منها بواسطة DNS. تتم إضافة سجل مورد إضافي (RR)، SSHFP، إلى ملف المنطقة، ويمكن للعميل المتصل مطابقة البصمة مع المفتاح المقدم.
في هذا المثال، نقوم بتوصيل عميل بخادم، "host.example.com". يجب أولاً إضافة سجلات موارد SSHFP إلى ملف المنطقة الخاص بـ host.example.com:
$ ssh-keygen -r host.example.com.
يجب إضافة الأسطر الناتجة إلى ملف المنطقة. للتحقق من أن المنطقة تجيب على استعلامات البصمات:
$ dig -t SSHFP host.example.com
أخيرًا، يتصل العميل:
$ ssh -o "VerifyHostKeyDNS ask" host.example.com
[...]
تم العثور على بصمة مفتاح المضيف المطابقة في DNS. هل أنت متأكد من أنك تريد المتابعة في الاتصال (نعم/لا)؟
راجع خيار VerifyHostKeyDNS في ssh_config(5) لمزيد من المعلومات.
شبكات خاصة افتراضية تعتمد على SSH
يحتوي ssh على دعم لشبكات خاصة افتراضية (VPN) باستخدام جهاز الشبكة الوهمي tun(4)، مما يسمح بتوصيل شبكتين بشكل آمن. يتحكم خيار تكوين sshd_config(5)، PermitTunnel، فيما إذا كان الخادم يدعم ذلك، وإلى أي مدى (حركة مرور الطبقة 2 أو 3).
سيوصل المثال التالي الشبكة 10.0.50.0/24 للعميل بالشبكة البعيدة 10.0.99.0/24 باستخدام اتصال نقطة إلى نقطة من 10.1.1.1 إلى 10.1.1.2، شريطة أن يسمح خادم SSH الذي يعمل على بوابة الشبكة البعيدة، في 192.168.1.15، بذلك.
على العميل:
# ssh -f -w 0:1 192.168.1.15 true
# ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
# route add 10.0.99.0/24 10.1.1.2
على الخادم:
# ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
# route add 10.0.50.0/24 10.1.1.1
يمكن ضبط وصول العميل بشكل أدق عبر الملف /root/.ssh/authorized_keys (انظر أدناه) وخيار خادم PermitRootLogin. سيسمح الإدخال التالي بالاتصالات على جهاز tun(4) 1 من المستخدم "jane" وعلى جهاز tun 2 من المستخدم "john"، إذا تم تعيين PermitRootLogin على "forced-commands-only":
tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane
tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... john
نظرًا لأن إعداد SSH يتضمن قدرًا كبيرًا من النفقات العامة، فقد يكون أكثر ملاءمة للإعدادات المؤقتة، مثل شبكات VPN اللاسلكية. يتم توفير شبكات VPN الأكثر ديمومة بشكل أفضل بواسطة أدوات مثل ipsecctl(8) و isakmpd(8).
البيئة
عادةً ما يقوم ssh بتعيين متغيرات البيئة التالية:
DISPLAY يشير متغير DISPLAY إلى موقع خادم X11. يتم تعيينه تلقائيًا بواسطة ssh للإشارة إلى قيمة بالشكل "hostname:n"، حيث
"hostname" يشير إلى المضيف الذي يعمل عليه الصدفة، و 'n' هو عدد صحيح ≥
يستخدم ssh هذه القيمة الخاصة لتوجيه اتصالات X11 عبر القناة الآمنة. يجب ألا يقوم المستخدم عادةً بتعيين DISPLAY بشكل صريح، لأن ذلك سيجعل اتصال X11 غير آمن (وسيتطلب من المستخدم نسخ ملفات تعريف الارتباط المطلوبة يدويًا).
HOME يتم تعيينه إلى مسار دليل المستخدم الرئيسي.
LOGNAME مرادف لـ USER؛ يتم تعيينه للتوافق مع الأنظمة التي تستخدم هذا المتغير.
MAIL يتم تعيينه إلى مسار صندوق بريد المستخدم.
PATH يتم تعيينه إلى مسار PATH الافتراضي، كما هو محدد عند تجميع ssh.
SSH_ASKPASS إذا كان ssh بحاجة إلى عبارة مرور، فسيقوم بقراءة عبارة المرور من الطرفية الحالية إذا تم تشغيله من الطرفية. إذا لم يكن لدى ssh طرفية مرتبطة به ولكن تم تعيين DISPLAY و SSH_ASKPASS، فسيقوم بتشغيل البرنامج المحدد بواسطة SSH_ASKPASS ويفتح نافذة X11 لقراءة عبارة المرور. هذا مفيد بشكل خاص عند استدعاء ssh من ملف .xsession أو برنامج نصي ذي صلة. (لاحظ أنه على بعض الأجهزة، قد يكون من الضروري إعادة توجيه الإدخال من /dev/null لجعل هذا يعمل.)
SSH_ASKPASS_REQUIRE يسمح بمزيد من التحكم في استخدام برنامج askpass. إذا تم تعيين هذا المتغير على "never"، فلن يحاول ssh أبدًا استخدام برنامج askpass. إذا تم تعيينه على "prefer"، فسيفضل ssh استخدام برنامج askpass بدلاً من الطرفية عند طلب كلمات المرور. أخيرًا، إذا تم تعيين المتغير على "force"، فسيتم استخدام برنامج askpass لجميع مدخلات عبارة المرور بغض النظر عما إذا تم تعيين DISPLAY أم لا.
SSH_AUTH_SOCK يحدد مسار مقبس مجال يونكس المستخدم للتواصل مع الوكيل.
SSH_CONNECTION يحدد طرفي اتصال العميل والخادم. يحتوي المتغير على أربعة قيم مفصولة بمسافات: عنوان IP الخاص بالعميل، ورقم منفذ العميل، وعنوان IP الخاص بالخادم، ورقم منفذ الخادم.
SSH_ORIGINAL_COMMAND يحتوي هذا المتغير على سطر الأوامر الأصلي إذا تم تنفيذ أمر مُجبر. يمكن استخدامه لاستخراج الوسائط الأصلية.
SSH_TTY يتم تعيينه إلى اسم الطرفية (المسار إلى الجهاز) المرتبطة بالطرفية أو الأمر الحالي. إذا لم يكن للجلسة الحالية أي طرفية، فلن يتم تعيين هذا المتغير.
SSH_TUNNEL يتم تعيينه اختياريًا بواسطة [sshd]({filename}../../sshd)(8) لاحتواء أسماء الواجهات المعينة إذا تم طلب إعادة توجيه النفق بواسطة العميل.
SSH_USER_AUTH يتم تعيينه اختياريًا بواسطة [sshd]({filename}../../sshd)(8)، وقد يحتوي هذا المتغير على مسار لملف يسرد طرق المصادقة التي تم استخدامها بنجاح عند إنشاء الجلسة، بما في ذلك أي مفاتيح عامة تم استخدامها.
TZ يتم تعيين هذا المتغير للإشارة إلى المنطقة الزمنية الحالية إذا تم تعيينها عند بدء تشغيل البرنامج الخادم (أي أن البرنامج الخادم يمرر القيمة إلى الاتصالات الجديدة).
USER يتم تعيينه إلى اسم المستخدم الذي يسجل الدخول.
بالإضافة إلى ذلك، يقرأ ssh ملف ~/.ssh/environment، ويضيف أسطر بالتنسيق "VARNAME=value" إلى البيئة إذا كان الملف موجودًا ويُسمح للمستخدمين بتغيير بيئتهم. لمزيد من المعلومات، راجع خيار PermitUserEnvironment في sshd_config(5).
الملفات
~/.rhosts
يُستخدم هذا الملف للتحقق من الهوية المستند إلى المضيف (انظر أعلاه). في بعض الأجهزة، قد يحتاج هذا الملف إلى أن يكون قابلاً للقراءة عالميًا إذا كان الدليل الرئيسي للمستخدم موجودًا على قسم NFS، لأن sshd(8) يقرأه بصلاحيات المستخدم الجذر. بالإضافة إلى ذلك، يجب أن يملكه المستخدم هذا الملف، ولا يجب أن يكون لديه أذونات كتابة لأي شخص آخر. الإذن الموصى به لمعظم الأجهزة هو القراءة / الكتابة للمستخدم، ولا يمكن الوصول إليه من قبل الآخرين.
~/.shosts
يُستخدم هذا الملف تمامًا بنفس الطريقة التي يُستخدم بها ملف .rhosts، ولكنه يسمح بالتحقق من الهوية المستند إلى المضيف دون السماح بتسجيل الدخول باستخدام rlogin / rsh.
~/.ssh/
هذا الدليل هو الموقع الافتراضي لجميع معلومات التكوين والتحقق من الهوية الخاصة بالمستخدم. لا يوجد شرط عام للحفاظ على سرية محتويات هذا الدليل بالكامل، ولكن الأذونات الموصى بها هي القراءة / الكتابة / التنفيذ للمستخدم، ولا يمكن الوصول إليه من قبل الآخرين.
~/.ssh/authorized_keys
يسرد المفاتيح العامة (ECDSA، Ed25519، RSA) التي يمكن استخدامها لتسجيل الدخول كمستخدم. يتم وصف تنسيق هذا الملف في صفحة دليل sshd(8). هذا الملف ليس شديد الحساسية، ولكن الأذونات الموصى بها هي القراءة / الكتابة للمستخدم، ولا يمكن الوصول إليه من قبل الآخرين.
~/.ssh/config
هذا هو ملف التكوين الخاص بالمستخدم. يتم وصف تنسيق الملف وخيارات التكوين في ssh_config(5). بسبب إمكانية إساءة الاستخدام، يجب أن يكون لهذا الملف أذونات صارمة: القراءة / الكتابة للمستخدم، ولا يمكن كتابته من قبل الآخرين. يمكن أن يكون قابلاً للكتابة من قبل المجموعة، شريطة أن تحتوي المجموعة المعنية على المستخدم فقط.
~/.ssh/environment
يحتوي على تعريفات إضافية لمتغيرات البيئة؛ انظر "البيئة"، أعلاه.
~/.ssh/id_ecdsa
~/.ssh/id_ecdsa_sk
~/.ssh/id_ed25519
~/.ssh/id_ed25519_sk
~/.ssh/id_rsa
يحتوي على المفتاح الخاص للتحقق من الهوية. تحتوي هذه الملفات على بيانات حساسة ويجب أن تكون قابلة للقراءة من قبل المستخدم ولكن لا يمكن الوصول إليها من قبل الآخرين (القراءة / الكتابة / التنفيذ). سيتجاهل ssh ببساطة ملف المفتاح الخاص إذا كان قابلاً للوصول من قبل الآخرين. من الممكن تحديد عبارة مرور عند إنشاء المفتاح والتي ستُستخدم لتشفير الجزء الحساس من هذا الملف باستخدام AES-128.
~/.ssh/id_ecdsa.pub
~/.ssh/id_ecdsa_sk.pub
~/.ssh/id_ed25519.pub
~/.ssh/id_ed25519_sk.pub
~/.ssh/id_rsa.pub
يحتوي على المفتاح العام للتحقق من الهوية. هذه الملفات ليست حساسة ويمكن (ولكن ليس من الضروري) أن تكون قابلة للقراءة من قبل أي شخص.
~/.ssh/known_hosts
يحتوي على قائمة بمفاتيح المضيف لجميع المضيفين الذين قام المستخدم بتسجيل الدخول إليهم والتي لم تكن موجودة بالفعل في القائمة على مستوى النظام لمفاتيح المضيف المعروفة. انظر sshd(8) لمزيد من التفاصيل حول تنسيق هذا الملف.
~/.ssh/rc
يتم تنفيذ الأوامر الموجودة في هذا الملف بواسطة ssh عندما يقوم المستخدم بتسجيل الدخول، قبل بدء تشغيل shell (أو أمر) المستخدم. انظر صفحة دليل sshd(8) لمزيد من المعلومات.
/etc/hosts.equiv
هذا الملف مخصص للمصادقة القائمة على المضيف (انظر أعلاه). يجب أن يكون قابلاً للكتابة بواسطة المستخدم الجذر فقط.
/etc/ssh/shosts.equiv
يستخدم هذا الملف بنفس الطريقة التي يستخدم بها ملف hosts.equiv، ولكنه يسمح بالمصادقة القائمة على المضيف دون السماح بتسجيل الدخول باستخدام rlogin/rsh.
/etc/ssh/ssh_config
ملف التكوين على مستوى النظام. يتم وصف تنسيق الملف وخيارات التكوين في ssh_config(5).
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_rsa_key
تحتوي هذه الملفات على الأجزاء الخاصة بمفاتيح المضيف وتستخدم للمصادقة القائمة على المضيف.
/etc/ssh/ssh_known_hosts
قائمة على مستوى النظام لمفاتيح المضيف المعروفة. يجب أن يقوم مسؤول النظام بإعداد هذا الملف ليحتوي على المفاتيح العامة للمضيف لجميع الأجهزة في المؤسسة. يجب أن يكون قابلاً للقراءة من قبل جميع المستخدمين. انظر sshd(8) لمزيد من التفاصيل حول تنسيق هذا الملف.
/etc/ssh/sshrc
يتم تنفيذ الأوامر الموجودة في هذا الملف بواسطة ssh عندما يقوم المستخدم بتسجيل الدخول، مباشرة قبل بدء تشغيل shell (أو الأمر) الخاص بالمستخدم. انظر صفحة دليل sshd(8) لمزيد من المعلومات.
حالة الخروج
يخرج ssh بحالة الخروج الخاصة بالأمر البعيد أو بحالة 255 إذا حدث خطأ.
انظر أيضًا
scp(1)، sftp(1)، ssh-add(1)، ssh-agent(1)، ssh-argv0(1)، ssh-keygen(1)، ssh-keyscan(1)، tun(4)، ssh_config(5)، ssh-keysign(8)، sshd(8)
المعايير
S. Lehtinen and C. Lonvick, The Secure Shell (SSH) Protocol Assigned Numbers, RFC 4250, January
200.
T. Ylonen and C. Lonvick, The Secure Shell (SSH) Protocol Architecture, RFC 4251, January 2006.
T. Ylonen and C. Lonvick, The Secure Shell (SSH) Authentication Protocol, RFC 4252, January 2006.
T. Ylonen and C. Lonvick, The Secure Shell (SSH) Transport Layer Protocol, RFC 4253, January
200.
T. Ylonen and C. Lonvick, The Secure Shell (SSH) Connection Protocol, RFC 4254, January 2006.
J. Schlyter and W. Griffin, Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints,
RFC 4255, January 2006.
F. Cusack and M. Forssen, Generic Message Exchange Authentication for the Secure Shell (SSH) Protocol
(SSH), RFC 4256, January 2006.
J. Galbraith and P. Remaker, The Secure Shell (SSH) Session Channel Break Extension, RFC 4335,
January 2006.
M. Bellare, T. Kohno, and C. Namprempre, The Secure Shell (SSH) Transport Layer Encryption Modes,
RFC 4344, January 2006.
B. Harris, Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol, RFC 4345,
January 2006.
M. Friedl, N. Provos, and W. Simpson, Diffie-Hellman Group Exchange for the Secure Shell (SSH)
Transport Layer Protocol, RFC 4419, March 2006.
J. Galbraith and R. Thayer, The Secure Shell (SSH) Public Key File Format, RFC 4716, November
200.
D. Stebila and J. Green, Elliptic Curve Algorithm Integration in the Secure Shell Transport
Layer, RFC 5656, December 2009.
أ. بيريغ ود. سونغ، تصور التجزئة: تقنية جديدة لتحسين الأمان في العالم الحقيقي، 1999،
ورشة العمل الدولية حول التقنيات التشفيرية والتجارة الإلكترونية (CrypTEC '99).
المؤلفون
OpenSSH هي مشتقة من إصدار ssh 1.2.12 الأصلي والمجاني الذي قام به تاتو يلونو. أضاف آرون كامبل وبوب بيك وماركوس فريدل ونييلز بروفوس وثيو دي رادت ودوج سونغ العديد من الإصلاحات وأعادوا ميزات أحدث وأنشأوا OpenSSH. ساهم ماركوس فريدل في دعم إصدارات بروتوكول SSH 1.5 و 2.0.