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


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

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

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


105
2017-11-01 14:05


मूल


टर्मिनल में Ctrl + A के बारे में आमतौर पर इसका मतलब है "लाइन की शुरुआत में जाएं"। टर्मिनल (विशेष रूप से बैश) में उपयोग की जाने वाली कुंजियों का सेट अक्सर विंडोज़ की तुलना में इमाक्स के करीब होता है। - Score_Under
रूट के रूप में sshing आम तौर पर एक बहुत ही बुरा अभ्यास माना जाता है। - Sam
स्क्रीन से वर्णों को हटाने के लिए, आपको कर्सर नियंत्रण अनुक्रमों का उपयोग करना होगा (यदि आपका टर्मिनल उनका समर्थन करता है)। चलाकर ssh एक स्क्रिप्ट से, आप इसे चलाने से पहले पैरामीटर स्ट्रिंग का विश्लेषण कर सकते हैं। - AFH
कृपया @ सैम ने जो कहा, उस पर ध्यान दें। आपको हर जगह रूट लॉग इन अक्षम करना चाहिए। एक जटिल पासवर्ड के साथ एक नियमित पासवर्ड के रूप में लॉग इन करें और फिर su रूट बनने के लिए। अगला चरण एसएसएच में पासवर्ड-आधारित प्रमाणीकरण योजनाओं को अक्षम करना और लॉगिन के लिए कुंजी का उपयोग करना है। - kostix
@ कोस्टिक्स मुझे यकीन है कि पासवर्ड अक्षम करना पहला कदम होना चाहिए। यदि आप पासवर्ड का उपयोग कर रहे हैं, तो su और अक्षम रूट के साथ, यह केवल उस पासवर्ड को दर्ज करने का मामला है जिसे हमलावर ने लॉगिन के बाद दूसरी बार अनुमान लगाया है, इसलिए यदि उपयोगकर्ता नाम का अनुमान लगाना कठिन होता है तो आप केवल कुछ हासिल करते हैं (जो अक्सर होता है मैं नहीं, आंकड़े किए बिना मुझे लगता है)। और पासवर्ड लॉगिन के बिना यह एक दूसरा रहस्य, पासवर्ड जोड़ता है, लेकिन यह निजी कुंजी से कम मूल्यवान है जो एक लंबा रहस्य है। - Nobody


जवाब:


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


163
2017-11-01 14:07



यह नियमित टर्मिनल प्रॉम्प्ट में भी काम करता है! - MoonRunestar
संदर्भ के लिए, यह रीडलाइन के "emacs मोड" में डिफ़ॉल्ट कुंजी-बाध्यकारी है unix-line-discard, "कर्सर से पिछली पंक्ति की शुरुआत में पिछली बार मार डालो" के रूप में वर्णित है। रेफरी: cnswww.cns.cwru.edu/php/chet/readline/rluserman.html#SEC17 जीएनयू रीडलाइन अधिकांश गोले और कई अन्य इंटरैक्टिव प्रोग्रामों द्वारा उपयोग की जाने वाली इनपुट लाइब्रेरी है (लेकिन है नहीं tty में बनाया गया है, तो यह काम नहीं करेगा हर जगह)। - IMSoP
@IMSoP हालांकि, Ctrl-U स्वयं है tty में बनाया गया है (के लिए डिफ़ॉल्ट चरित्र के रूप में stty kill फ़ंक्शन), यही कारण है कि यह ssh पासवर्ड प्रॉम्प्ट के साथ काम करता है। - Random832
बीटीडब्ल्यू, Ctrl + K कर्सर से हटाने के बराबर है समाप्त लाइन का - wjandrea
@ डेनिस जेहरुद्दीन: यह संभव नहीं है, एसएसएच लाइन-संपादन प्रदान करने के लिए रीडलाइन का उपयोग नहीं करता है। मेरा जवाब देखें - Peter Cordes


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

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

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

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


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

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

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

सम्बंधित: टीटीवी 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 row ##' या 'stty cols ##' का उपयोग करके आप फ्लाई पर बदल सकते हैं कि टर्मिनल विंडो में कितनी पंक्तियां या कॉलम उपलब्ध हैं। जो विशेष रूप से आसान होता है जब आप खिड़की में खिड़की में काम कर रहे होते हैं जैसे कि वीएनसी, जो जरूरी नहीं है कि आपकी बाहरी खिड़की ठीक से कितनी बड़ी हो। आप मूल रूप से अपने सक्रिय क्षेत्र को उस खिड़की से छोटा होने के लिए परिभाषित कर सकते हैं और उसके बाद स्क्रॉल नहीं करना है। VI और अन्य चीजों को अभी भी ठीक से काम करने की अनुमति है। यह बैकस्पेस को रीमेप भी कर सकता है और फ्लाई पर हटा सकता है। - Rowan Hawkins
@ रोवनहॉकिन्स: मेरा अंतिम पैराग्राफ खराब संपादित किया गया था। अब तय मैं इस बिंदु को बनाने की कोशिश कर रहा था कि एक और टीटीआई से रीडायरेक्ट करके, आप देख सकते हैं stty / ioctl सेटिंग्स जो बैश + रीडलाइन स्वयं कच्चे मोड में लागू होती है। (और तथ्य यह है कि यह कच्चे मोड में है, जहां अधिकांश विशेष पात्र लागू नहीं होते हैं) - Peter Cordes