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



جرب أداة القضاء على المشاكل

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



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



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

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



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

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

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



الطرفية الزائفة

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

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

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

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

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

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

على سبيل المثال ، استخدم sshpass -p password ssh -T appuals@ssh.example.com لإجبار النظام على العمل من داخل البرنامج النصي.

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

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

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

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

وظائف متوقفة

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

العلامات كيفية استخدام Linux ssh 3 دقائق للقراءة