تم: لن يتم تخصيص محطة زائفة لأن stdin ليس محطة

في معظم الحالات ، ستتلقى أمرًا مربكًا "لن يتم تخصيص محطة زائفة لأن stdin ليس خطأً طرفيًا" فقط عندما تقوم بتشغيل نوع من أوامر SSH من برنامج نصي. إذا كنت تقوم بتشغيل نفس الأمر من سطر الأوامر ، فقد يعمل بشكل جيد.

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

الطريقة 1: فرض وتعطيل التخصيص الزائف

هناك زوج من خيارات سطر الأوامر قد يحل المشكلة بسرعة لك. جرب ssh -t -t -R متبوعًا ببقية ما كنت تحاول الاتصال به لفرض تخصيص شبه طرفي. على سبيل المثال ، لنفترض أنك كنت ستستخدم ssh -p 80 [email protected] لتسجيل الدخول إلى حسابك على example.com ، وهو بالطبع دمية لتوثيق غير موجود.

حاول تشغيل مثل ssh -t -t -R -p 80 [email protected] ومعرفة ما إذا كان هذا سيؤدي إلى حل المشكلة. ستحتاج بالطبع إلى استبدال الاسم بحسابك الفعلي واسم مضيفك من أجل تسجيل الدخول بنجاح إلى النظام. هذا يفرض تخصيص محطة ، لذلك يجب ألا ترى أنه لن يتم تخصيص المحطة الزائفة لأن stdin ليس خطأً طرفيًا.

من ناحية أخرى ، قد ينتهي بك الأمر بسلسلة ثابتة من رسائل الخطأ. لاحظ بعض المستخدمين أن هذا يمكن اعتباره مسليًا.

إنه أمر محبط بالتأكيد على الرغم من ذلك ، لذا استخدم Ctrl + C لإيقاف العملية.

يمكنك محاولة استخدام مفتاح واحد فقط أو زيادة الرقم. إذا لم يفلح ذلك ، فاستبدل أي محولات -t بمحول -T في الأمر ، على سبيل المثال ssh -T -R -p 80 [email protected] ومعرفة ما إذا كان ذلك يعمل.

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

نظرًا لأن الأمر ssh أعطى هذين الخيارين المتقابلين أسماء متشابهة ، تذكر أن -t يفرض تخصيص المحطات الزائفة بينما يقوم -T بتعطيله. هذه الخيارات حساسة لحالة الأحرف ، وغالبًا ما تكون ضرورية من داخل البرامج النصية لأن ssh يحتاج إلى محطة TTY تقليدية للعمل. بطبيعة الحال ، في حالتك ستستخدم محاكي المحطة الطرفية لهذا الغرض.

الطريقة 2: استخدام sshpass

قد يجد بعض الأشخاص أن البرامج النصية الخاصة بهم تعمل بشكل أفضل مع الأمر sshpass ، والذي لا يتم تضمينه افتراضيًا. يمكنك دائمًا تثبيته باستخدام sudo apt-get install sshpass أو sudo yum install sshpass إذا كنت تفضل تجربته أو لأنك بحاجة إليه لحالة الاستخدام الخاصة بك.

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

على سبيل المثال ، استخدم sshpass -p password ssh -T [email protected] لإجبار النظام على العمل من داخل البرنامج النصي.

الطريقة الثالثة: إصلاح أخطاء إدارة الوظائف

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

هذا الخطأ ناتج عن شيء غير منتظم على الخادم البعيد يتعلق إما بـ csh أو tcsh أو ربما حتى Almquist أو صدفة أخرى. ربما لم تكن قد لاحظت ذلك لأنك كنت تتلقى رسائل خطأ أخرى ، ولكن بشرط ألا ترى أي رسائل أخرى حول المحطات الزائفة ، فمن الممكن أن تستمر نسبيًا بالطريقة المعتادة.

قد لا ترغب في محاولة استخدام Ctrl + Z في هذه الحالة لإيقاف العمليات ، لأنه قد لا توجد طريقة لبدء النسخ الاحتياطي مرة أخرى. إذا تلقيت رسالة خطأ تفيد بأن هناك وظائف متوقفة عند الخروج ، فلن يُسمح لك بتسجيل الخروج.

استخدم الأمرين ps و kill لإغلاق أي وظائف لا يمكنك إغلاقها ، على افتراض أنك لا تمانع في فقدان العمل في هذه العملية. ستتمكن من الخروج الآن.

الكلمات الدلالية لينكس how-to ssh