سؤال حذف كلمة المرور المدخلة في موجه كلمة المرور المخفي (Linux) باستخدام الاختصار


هل هناك طريقة لحذف كل الحروف التي أدخلتها في كلمة مرور مخفية في لينكس؟ على سبيل المثال ، عندما أطلب من SSH إلى خادم ، فإنه يطلب كلمة المرور الخاصة بي حيث لا يتم عرض المفاتيح المدخلة:

$ ssh root@somehost
root@somehost's password:

هل هناك طريقة لحذف كل النص الذي أدخله دون الحاجة إلى الضغط على زر backspace لفترة غير معروفة من الوقت؟ عندما أظن أنني دخلت شيئا خاطئا أريد أن أبدأ وأضغط على backspace لبضع ثوان أمر مزعج. حاولت زر Esc فى الكيبورد، السيطرةا على أمل اختيار النص بأكمله و الصفحة الرئيسية. السيطرةC يلغي الأمر بأكمله ويجب أن أرسل الأمر مرة أخرى لإعادة المحاولة. هذا هو الحل الأفضل والأسرع تقريبًا ولكن لا يزال غير مُرضٍ. إدراج لا يعمل في بلدي قذيفة سواء.


105
2017-11-01 14:05


الأصل


فيما يتعلق Ctrl + A ، في محطة وهذا يعني عادة "اذهب إلى بداية السطر". غالبًا ما تكون مجموعة المفاتيح المستخدمة في الجهاز (وخاصةً bash) أقرب إلى Emacs من Windows. - Score_Under
يعتبر Sshing كجذر عادة ممارسة سيئة للغاية. - Sam
لحذف أحرف من الشاشة ، ستحتاج إلى استخدام تسلسلات التحكم في المؤشر (إذا كان جهازك يدعمها). عن طريق الركض ssh من برنامج نصي ، يمكنك تحليل سلسلة المعلمة قبل تشغيلها. - AFH
يرجى الانتباه إلى ما قالهSam. يجب عليك تعطيل عمليات تسجيل الدخول الجذر في كل مكان. تسجيل الدخول كمستخدم عادي بكلمة مرور معقدة ثم su لتصبح الجذر. الخطوة التالية هي تعطيل أنظمة المصادقة المستندة إلى كلمة المرور في SSH واستخدام مفاتيح تسجيل الدخول. - kostix
kostix أنا متأكد من أن كلمة المرور يجب أن تكون الخطوة الأولى. إذا كنت تستخدم كلمات مرور ، فمع الجذر su معطلاً ، فإنها مجرد مسألة إدخال كلمة المرور التي خمّنها المهاجم بالفعل مرة ثانية بعد تسجيل الدخول ، بحيث لا تكسب شيئًا إلا إذا كان من الصعب تخمين اسم المستخدم (وهو غالبًا ما يكون أفترض دون وجود إحصاءات). وبدون تسجيل الدخول بكلمة مرور ، يضيف سرًا ثانيًا ، وكلمة المرور ، ولكن هذا يستحق أقل من المفتاح الخاص الذي يعد سرًا أطول. - Nobody


الأجوبة:


يمكنك حذف كلمة المرور المكتوبة بأكملها باستخدام السيطرة+U.


163
2017-11-01 14:07



هذا يعمل أيضا في موجه المحطة العادية أيضا! - MoonRunestar
للإشارة ، هذا هو مفتاح الربط الافتراضي في "وضع emacs" لـ readline لـ unix-line-discard، كما هو موضح "اقطع إلى الخلف من المؤشر إلى بداية السطر الحالي." المرجع: cnswww.cns.cwru.edu/php/chet/readline/rluserman.html#SEC17 جنو readline هي مكتبة المدخلات المستخدمة من قبل معظم قذائف والعديد من البرامج التفاعلية الأخرى (ولكن ليس بنيت في Tty ، لذلك لن ينجح هذا في كل مكان). - IMSoP
IMSoP ومع ذلك ، Ctrl-U نفسها هو بنيت في توتي (كحرف افتراضي لل stty kill وظيفة) ، وهذا هو السبب في أنه يعمل مع موجه كلمة مرور ssh. - Random832
BTW ، Ctrl + K هو مكافئ للحذف من المؤشر إلى النهاية من الخط. - wjandrea
DennisJaheruddin: هذا غير ممكن ، ssh لا تستخدم readline لتوفير خط التحرير. انظر جوابي. - Peter Cordes


مختلف bash، sshلا يستخدم موجه كلمة المرور أي مكتبة خاصة بمدخل المحطة الطرفية مثل readline.  إن ميزات تحرير الخطوط هي فقط ميزات خط التحرير POSIX TTY الأساسية.

لذا لديك POSIX TTY في الوضع "المطبوخ" (غير الخام) ، والمعروف أيضًا باسم الوضع المتعارف عليه ، وتعديل السطر الوحيد المتاح هو ما تقدمه النواة. نرى stty(1)ولاحظ ذلك
kill = ^U. هذا أيضًا هو المكان الذي يتم فيه تحديد حرف مسافة للخلف (erase = ^?). Word-erase (^W) مريحة عندما لا تكتب أعمى.

lnext = ^V يعني أنه يمكنك كتابة عنصر تحكم v ثم أي شيء (بما في ذلك control-c) للحصول على عنصر تحكم حرفي c.

لتصحيح ما كنت تحاول القيام به بشكل أعمى ، قم بتشغيل cat أو cat > /dev/null في المحطة الخاصة بك. اكتب الأشياء ، ثم شاهد ما يصلح وما لا يمكن تعديله.


readline (استعمل من قبل bash) يقرأ الحرف الخام ويقوم بتحرير خط في مساحة المستخدم. تتوافق روابطه الافتراضية مع حروف التحكم الافتراضية في TTY ، على الرغم من ذلك ، بالنسبة لمجموعة فرعية من ميزات التحرير التي يقدمها كلاهما.

readline يذهب إلى أبعد من تحرير سطر بسيط من TTY عادي. (على سبيل المثال ، يمكن لـ TTY حذف الأحرف فقط في نهاية السطر ، لذلك لا يوجد ^a و delete أو يسار / يمين السهم)

متى bash تشغيل أمر في المقدمة ، فإنه يضع TTY في الوضع المتعارف عليه أولاً (لأن هذا هو الإعداد الافتراضي). حتى الجري stty -a (مع عدم وجود أي إعادة توجيه) سيشاهد دائمًا طرفه الخاص في الوضع المتعارف عليه. ولكن إذا قمت بإعادة توجيه المدخلات من TTY الأخرى التي لديها bash عند تشغيله ، يمكنك الاطلاع على ما تكتبه bash + readline إعدادات المحطة الطرفية. مثلا stty -a < /dev/pts/12 عروض -icanon لوضع الخام لأن لدي bash تعمل على تلك المحطة. (تحولت إلى علامة تبويب أخرى وركضت tty، ثم استخدم هذا مسار ملف الجهاز من المحطة الأولى). إذا ركضت cat في تلك المحطة الأخرى ، كنت أرى icanon لوضع الكنسي.

ذات صلة: TTY demystified

https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html

https://en.wikipedia.org/wiki/POSIX_terminal_interface


14
2017-11-02 14:05



يمكنك بالفعل كتابة "stty" لرؤية جميع الإعدادات الحالية. إن استخدام "stty rows ##" أو "stty cols ##" سيسمح لك بتغيير عدد الصفوف أو الأعمدة التي تتوفر بها نافذة المحطة الطرفية. وهو مفيد بشكل خاص عندما تعمل في نافذة في نافذة من خلال شيء مثل VNC الذي لا يمسك بالضرورة حجم النافذة الخارجية الخاصة بك بشكل صحيح. يمكنك بشكل أساسي تحديد المنطقة النشطة لتكون أصغر من النافذة الموجودة بها ، ومن ثم لن تضطر إلى التمرير حولها. السماح لـ VI وأشياء أخرى بالعمل بشكل صحيح. ويمكن أيضا إعادة رسم مسافة للخلف وحذفها على الطاير. - Rowan Hawkins
@ RowanHawkins: تم تعديل فقرتي الأخيرة بشكل سيئ. ثابت الآن. كنت أحاول أن أوضح أنه من خلال إعادة توجيه tty آخر ، يمكنك أن ترى stty / ioctl تم تطبيق bash + readline نفسه في وضع raw. (وحقيقة أنه في وضع raw على الإطلاق ، حيث لا تنطبق معظم الأحرف الخاصة) - Peter Cordes