शॉर्टकट के साथ छिपे हुए पासवर्ड प्रॉम्प्ट (लिनक्स) में दर्ज पासवर्ड हटाएं


106

क्या सभी वर्णों को हटाने का एक तरीका है जो मैंने लिनक्स में एक छिपे हुए पासवर्ड प्रॉम्प्ट में दर्ज किया था? उदाहरण के लिए, जब मैं किसी सर्वर पर SSH करता हूं, तो यह मेरा पासवर्ड पूछता है जहां दर्ज की गई कुंजियां नहीं दिखाई गई हैं:

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

क्या किसी अज्ञात राशि के लिए बैकस्पेस को दबाने के बिना मेरे सभी दर्ज किए गए पाठ को हटाने का एक तरीका है? जब मुझे लगता है कि मैंने कुछ गलत दर्ज किया है तो मैं शुरू करना चाहता हूं और कुछ सेकंड के लिए बैकस्पेस दबा रहा हूं। मैंने कोशिश की Esc, CtrlAउम्मीद है कि पूरे पाठ का चयन करें और HomeCtrlCपूरे आदेश को रद्द कर देता है और मुझे फिर से प्रयास करने के लिए आदेश भेजना पड़ता है। यह लगभग सबसे अच्छा और सबसे तेज़ समाधान है लेकिन फिर भी संतोषजनक नहीं है। सम्मिलित करना मेरे शेल में काम नहीं करता है।


7
Ctrl + A के संबंध में, टर्मिनल में इसका आम तौर पर अर्थ है "लाइन की शुरुआत पर जाएं"। टर्मिनल (विशेष रूप से बैश) में उपयोग की जाने वाली चाबियों का सेट अक्सर विंडोज की तुलना में Emacs के करीब होता है।
स्कोर_उंडर

18
जड़ के रूप में तड़कना आमतौर पर एक बहुत ही बुरा अभ्यास माना जाता है।
सैम

पात्रों को स्क्रीन से हटाने के लिए, आपको कर्सर नियंत्रण अनुक्रमों का उपयोग करना होगा (यदि आपका टर्मिनल उन्हें समर्थन करता है)। sshस्क्रिप्ट से चलाकर , आप इसे चलाने से पहले पैरामीटर स्ट्रिंग का विश्लेषण कर सकते हैं।
AFH

4
@Sam ने जो बताया उस पर ध्यान दीजिए। आपको हर जगह रूट लॉगिन को अक्षम करना चाहिए। एक जटिल पासवर्ड के साथ एक नियमित उपयोगकर्ता के रूप में लॉग इन करें और फिर suरूट बनें। अगला कदम SSH में पासवर्ड-आधारित प्रमाणीकरण योजनाओं को अक्षम करना और लॉगिन के लिए कुंजियों का उपयोग करना है।
कोस्टिक्स

@kostix मुझे पूरा यकीन है कि पासवर्ड अक्षम करना पहला कदम होना चाहिए। यदि आप पासवर्ड का उपयोग कर रहे हैं, तो र और अक्षम रूट के साथ, यह केवल पासवर्ड दर्ज करने की बात है जिसे हमलावर ने लॉगिन के बाद दूसरी बार पहले ही अनुमान लगा लिया है, इसलिए आप केवल कुछ हासिल करते हैं यदि उपयोगकर्ता नाम का अनुमान लगाना मुश्किल है (जो कि अक्सर यह है 'टी, मैं आँकड़े के बिना मान)। और पासवर्ड लॉगिन के बिना यह एक दूसरा रहस्य, पासवर्ड जोड़ता है, लेकिन यह निजी कुंजी से कम मूल्य का है जो एक लंबा रहस्य है।
कोई भी

जवाबों:


163

आप Ctrl+ के साथ पूरे टाइप किए गए पासवर्ड को हटा सकते हैं U


6
यह नियमित टर्मिनल प्रॉम्प्ट में भी काम करता है!
चंद्र नक्षत्र

35
संदर्भ के लिए, यह रीडलाइन के "एमएसीएस मोड" के लिए डिफ़ॉल्ट की-बाइंडिंग है unix-line-discard, जिसे "कर्सर से वर्तमान लाइन की शुरुआत में पिछड़े को मारें" के रूप में वर्णित किया गया है। Ref: cnswww.cns.cwru.edu/php/chet/readline/rluserman.html#SEC17 GNU रीडलाइन अधिकांश गोले और कई अन्य इंटरएक्टिव प्रोग्राम द्वारा उपयोग की जाने वाली इनपुट लाइब्रेरी है (लेकिन इसे टटी में नहीं बनाया गया है, इसलिए यह नहीं होगा हर जगह काम )।
IMSoP

22
हालांकि @IMSoP, Ctrl-U ही है (के लिए डिफ़ॉल्ट चरित्र के रूप में tty में बनाया गया stty killहै, जिसके कारण यह ssh पासवर्ड संकेत के साथ काम करता समारोह)।
रैंडम 832

5
BTW, Ctrl + K कर्सर को लाइन से अंत तक हटाने के लिए बराबर है ।
वेजेंड्रिया

2
@ डेनिसजेरुद्दीन: यह संभव नहीं है, ssh लाइन-संपादन प्रदान करने के लिए रीडलाइन का उपयोग नहीं करता है। मेरा जवाब देखिए।
पीटर कॉर्डेस

14

इसके विपरीत bash, sshपासवर्ड प्रॉम्प्ट किसी भी विशेष टर्मिनल-इनपुट लाइब्रेरी का उपयोग नहीं करता है readline लाइन-एडिटिंग फीचर्स सिर्फ बेसलाइन POSIX TTY लाइन-एडिटिंग फीचर हैं।

तो आपके पास "पका हुआ" मोड (कच्चा नहीं), उर्फ ​​विहित मोड में एक पॉस टीटीवाई है, और एकमात्र पंक्ति संपादन जो उपलब्ध है वह कर्नेल द्वारा प्रदान किया गया है। देखें stty(1), और ध्यान दें
kill = ^U। यह वह जगह भी है जहां बैकस्पेस वर्ण परिभाषित किया गया है ( erase = ^?)। ^Wजब आप अंधे टाइप नहीं कर रहे हैं तब शब्द-मिटा ( ) सुविधाजनक है।

lnext = ^V इसका मतलब है कि आप शाब्दिक नियंत्रण-सी प्राप्त करने के लिए कंट्रोल-वी (फिर कंट्रोल-सी सहित) टाइप कर सकते हैं।

डिबग करने के लिए कि आप क्या कर रहे थे आँख बंद करके, चलाएं catया cat > /dev/nullअपने टर्मिनल में । सामान टाइप करें, फिर देखें कि क्या काम करता है और इसे संपादित करने के लिए क्या नहीं है।


readline(द्वारा प्रयुक्त bash) कच्चे चरित्र को पढ़ता है और उपयोगकर्ता-स्थान में लाइन-संपादन करता है। इसके डिफ़ॉल्ट बाइंडिंग डिफ़ॉल्ट TTY नियंत्रण वर्णों के साथ संगत हैं, हालांकि, संपादन सुविधाओं के सबसेट के लिए जो वे दोनों प्रदान करते हैं।

रीडलाइन एक सादे TTY की सरल रेखा संपादन से आगे जाती है। (उदाहरण के लिए एक TTY केवल पंक्ति के अंत में वर्णों को हटा सकता है, इसलिए कोई ^aऔर deleteया बाएँ / दाएँ तीर नहीं है)

जब bashअग्रभूमि में एक कमांड चलता है, तो यह TTY को पहले विहित मोड में डालता है (क्योंकि यह डिफ़ॉल्ट है)। तो चल रहा है stty -a(बिना पुनर्निर्देशन के) हमेशा अपने टर्मिनल को विहित मोड में देखेगा। लेकिन अगर आप कुछ अन्य TTY से इनपुट को पुनर्निर्देशित bashकरते हैं, जो उस पर चल रहे हैं, तो आप देख सकते हैं कि टर्मिनल सेटिंग्स ने bash + readline क्या लागू किया है। उदाहरण के लिए कच्चे मोड के लिए stty -a < /dev/pts/12दिखाता -icanonहै क्योंकि मेरे पास bashउस टर्मिनल पर चल रहा है । (मैंने दूसरे टैब पर स्विच किया और भाग गया tty, फिर पहले टर्मिनल से उस डिवाइस फ़ाइल पथ का उपयोग किया)। अगर मैं catउस दूसरे टर्मिनल में भाग गया, तो मैं icanonविहित मोड के लिए देखूंगा ।

संबंधित: TTY ध्वस्त

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

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


आप वास्तव में सभी मौजूदा सेटिंग्स को देखने के लिए केवल 'स्ट्टी' टाइप कर सकते हैं। 'स्टाइट पंक्तियों ##' या 'स्टाइट कोल्स ##' का उपयोग करने से आप फ्लाई पर बदल सकते हैं कि टर्मिनल विंडो में कितनी पंक्तियाँ या कॉलम उपलब्ध हैं। जब आप VNC जैसी किसी चीज़ के माध्यम से एक खिड़की में काम कर रहे होते हैं, जो विशेष रूप से आसान होता है, तो यह आवश्यक नहीं है कि आपकी बाहरी खिड़की कितनी बड़ी हो। आप मूल रूप से अपने सक्रिय क्षेत्र को उस विंडो से छोटा होने के लिए परिभाषित कर सकते हैं जिसमें वह अंदर है और फिर उसे स्क्रॉल नहीं करना है। छठी और अन्य चीजों की अनुमति अभी भी ठीक से काम करने के लिए। यह बैकस्पेस रीमैप भी कर सकता है और फ्लाई पर डिलीट भी कर सकता है।
रोवन हॉकिंस

@ रोवनहाकिंस: मेरा अंतिम पैराग्राफ खराब तरीके से संपादित किया गया था। अभी तय किया है। मैं इस बिंदु को बनाने की कोशिश कर रहा था कि दूसरे ट्टी से पुनर्निर्देशित करके, आप sttyउस ioctl सेटिंग्स को देख सकते हैं, जो bash + readline ने स्वयं कच्चे मोड में लागू किया है। (और तथ्य यह है कि यह बिल्कुल कच्ची विधा में है, जहाँ अधिकांश विशेष पात्र लागू नहीं होते हैं)
पीटर कॉर्ड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.