एक दुष्ट ट्रोजन ने हेबर के लिए मेरा खाता चुरा लिया, जिसके बाद मेरे खाते में कुछ बेवकूफ कार्टून प्रकाशित होने लगे। दुर्भाग्य से, मुझे केवल इस बारे में पता चला जब यूएफओ ने मुझे केवल-पढ़ने के लिए बदल दिया, और रेटिंग एक नकारात्मक मूल्य पर चली गई। इससे कोई फर्क नहीं पड़ता: आखिरकार एक पोस्ट लिखने का कारण जो लंबे समय से चल रहा है।
एक वेब डेवलपर को एक कंसोल की आवश्यकता होती है, लेकिन इतना नहीं कि वह सब कुछ छोड़ दे और मोटी लिनक्स किताबें पढ़ना शुरू कर दे। यही कारण है कि मैंने केस से केस में कंसोल ट्रिक्स सीखीं और अपने कर्मचारियों को देखते हुए, कई ऐसा ही करते हैं। मैं सुविधाजनक रहस्यों के एक जोड़े को प्रकट करूंगा, जिसके बिना मैं अब नहीं रह सकता।
1) ssh कुंजियों का उपयोग करें, ल्यूक!
मैंने लंबे समय तक चाबियों की खोज की, हालांकि लोग नियमित रूप से मिलते हैं जिनके लिए वे नए हैं। Ssh कुंजियाँ आपको एक बार कनेक्शन को कॉन्फ़िगर करने की अनुमति देती हैं और "नोटपैड" में सभी साइटों के लिए पासवर्ड स्टोर नहीं करती हैं।
$ ssh-keygen -t dsa
हम मानक कुंजी स्थान से सहमत हैं: /home/user/data/.ssh/id_dsa,
पासफ़्रेज़ दर्ज करें (या दर्ज न करें)। इसे दर्ज करना बेहतर है: सिस्टम आपके पासवर्ड को लॉगिन से लॉगआउट तक याद रखेगा, अर्थात, आपको इस पासवर्ड को लगातार दर्ज करने की आवश्यकता नहीं है। लेकिन परिमाण के एक क्रम से सुरक्षा बढ़ेगी।
उसके बाद, हमें दो फाइलें मिलती हैं: ~ / .ssh / id_dsa और ~ / .ssh / id_dsa.pub।
पहली एक व्यक्तिगत (निजी) कुंजी है - इसे यूएसबी फ्लैश ड्राइव पर कॉपी करना और रिजर्व में छिपाना बेहतर है। दूसरा सार्वजनिक कुंजी है, और हम इसे अपने सभी सर्वरों को रिपोर्ट करेंगे।
सर्वर पर कुंजी को स्थानांतरित करने का सबसे आसान तरीका इस कमांड को आपके कंसोल में निष्पादित करना है:
$ ssh user@hostname "umask 077; cat >> .ssh/authorized_keys" < ~/.ssh/id_dsa.pub
और आखिरी बार दूरस्थ कंप्यूटर के SSH के लिए पासवर्ड दर्ज करें
2) ssh config का उपयोग करें, ल्यूक!
सब कुछ ठीक काम करता है, लेकिन आपको हर बार लंबे लॉगिन और होस्टनाम दर्ज करने की आवश्यकता होती है। अनुकूलन करना आवश्यक है!
फ़ाइल संपादित करें ~ / .ssh / config, जोड़ें:
Host host
User user
Hostname hostname
हम ~ / .ssh / config फ़ाइल के अधिकारों की जाँच करते हैं, यदि वे हमारे अलावा किसी और को लिखने की अनुमति देते हैं, तो हम दूसरों को बदलते हैं:
$ chmod 644 ~/.ssh/config
मान लीजिए कि जिस कंप्यूटर से हम जुड़ना चाहते हैं, वह नेट के पीछे है। हमें एसएसएच के माध्यम से एक सर्वर में लॉग इन करना होगा, फिर इसे वांछित कंप्यूटर पर जाना होगा। यदि आपको दिन में कई बार ऐसा करने की आवश्यकता है, तो यह बहुत, बहुत जल्दी ऊब जाएगा।
हम विन्यास में नया नियम लिखते हैं:
Host computer.hostname
Hostname 192.168.1.10
User user
ProxyCommand ssh hostname nc %h %p
वह सब है! अब हम ssh computer.hostname लिख सकते हैं, उपयोगकर्ता को स्वचालित रूप से सेट किया जाएगा, कनेक्शन सीधे वांछित कंप्यूटर के साथ स्थापित किया जाएगा। मुख्य बात यह नहीं है कि उसे भूल जाओ, अपनी सार्वजनिक कुंजी रखो।
इसके अलावा, मैं दो उपयोगी निर्देशों का वर्णन करूंगा।
LocalForward localhost:8080 192.168.10.10:80 # , SSH.
Port 8022 # SSH , .
3) ऑटो-पूर्ण में पावर
हर बार चार मेजबान पत्र दर्ज करें? यह थका देने वाला है! एक नियम के रूप में, स्वत: पूर्णता ssh-config फ़ाइलों को पार्स करता है, यह एक होस्टनाम लिखना और टैब पर क्लिक करना शुरू करने के लिए पर्याप्त है ताकि होस्ट नाम स्वचालित रूप से जुड़ जाए। यदि ऐसा नहीं होता है, तो आपको इस बैश को सिखाने की जरूरत है।
एक पंक्ति जोड़ें
complete -W "$(echo `cat ~/.ssh/config | grep -iE '^(Host|HostName) ' | awk '{print $2}'`)" ssh
को ~ / .bash_profile
आप निम्नलिखित कोड वहां जोड़ सकते हैं:
function __mysql_list_all_opts {
local i IFS=$'\n'
mysql --help|egrep '^ -'|awk '{print $1 "\n" $2}'|egrep '^-'|sed s/,$//|sort
}
__mysql_all_opts=
function __mysql_compute_all_opts {
: ${__mysql_all_opts:=$(__mysql_list_all_opts)}
}
function _mysql_complete {
local cur prev opts
COMPREPLY=()
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
case $prev in
*)
if [[ "$cur" == -* ]]; then
__mysql_compute_all_opts
opts=${__mysql_all_opts}
else
opts=$(mysql -uroot -s -e 'show databases')
fi
;;
esac
COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
COMPREPLY=( $(compgen -W "$opts" -- $cur) )
}
complete -F _mysql_complete mysql
आप उसी तरह mysqldump को पंजीकृत कर सकते हैं।
एक नया बैश कंसोल खोलने के बाद, हमारा कंसोल रिमोट कंप्यूटर के नाम और स्थानीय डेटाबेस के नाम को पूरक करेगा!
यदि आपके पास डेटाबेस से कनेक्ट करने के लिए एक पासवर्ड है, तो आपको अगला कदम उठाने की आवश्यकता है।
4) कंसोल की मांसपेशी के लिए पासवर्ड दर्ज न करें
हर बार जब आप mysql या mysqldump कंसोल क्लाइंट लॉन्च करते हैं, तो आपको इसे उपयोगकर्ता नाम और पासवर्ड याद रखना होगा। इससे बचने के लिए, यह एक बार के लिए पर्याप्त है और सभी के लिए निम्नलिखित सामग्री के साथ एक ~ / .my.cnf फ़ाइल बनाएं:
[client]
user = 'root'
password = 'password'
[mysql]
pager = less -iMSx4 -FX
वांछित के रूप में mysqld अनुभाग जोड़ें। यह आपको कमांड लाइन से डेटाबेस के साथ काम करते समय सीमा के इष्टतम चयन के बारे में चिंता करने की अनुमति नहीं देता है। यदि आउटपुट स्क्रीन पर लाइनों की संख्या से अधिक है, तो आउटपुट स्वचालित रूप से कम कमांड को भेजा जाएगा। जिस पर आप आसानी से लंबवत और क्षैतिज रूप से नेविगेट कर सकते हैं और यहां तक कि खोज भी कर सकते हैं!
5) परिणाम:
रिमोट सर्वर से डेटाबेस डंप करने के लिए, आपको पहले कमांड की एक श्रृंखला चलानी होगी। सबसे खराब स्थिति में (उदाहरण वास्तविक घटनाओं पर आधारित है):
localhost $ ssh -P 8022 user@hostname #
hostname $ ssh user2@computer #
computer $ mysqldump -u root -p password long_database_name > ~/filename.sql
computer $ exit
hostname $ scp user2@computer:~/filename.sql ~/filename.sql
hostname $ ssh user2@computer
computer $ rm ~/filename.sql
computer $ exit
hostname $ exit
localhost $ scp -P 8022 user@hostname:~/filename.sql ~/filename.sql
localhost $ ssh -P 8022 user@hostname
hostname $ rm ~/filename.sql
hostname $ exit
localhost $ cat ~/filename.sql | mysql -u root -p password long_database_name
localhost $ rm ~/filename.sql # ,
अब, इस सब डरावने के बजाय, बस
एक कमांड चलाएं:
$ ssh computer mysqldump long_database_name | mysql long_database_name
वास्तव में, यह और भी कम है, क्योंकि प्रत्येक टीम से पहले आप टैब दबा सकते हैं:
ssh com [टैब] mysqldu [टैब] लोन [टैब] | mys [टैब] लोन [टैब]
फ़ाइल को भेजने की कोई इच्छा नहीं है? इससे कोई फर्क नहीं पड़ता, हम दूसरी तरफ से एक ज़िप में मक्खी पर पैक करेंगे, और इस तरफ से - अनपैक।
$ ssh computer 'mysqldump long_database_name | gzip' | gunzip | mysql longdatabase_name
अतिरिक्त बन्स के रूप में, उन्हें डॉट में फिर से सहेजे बिना, एनएटी के पीछे एक दूरस्थ कंप्यूटर से सीधे खुद को फाइलें डाउनलोड करने का अवसर मिला।
$ scp computer:~/test.txt ~/
यदि विषय समुदाय के लिए दिलचस्प लगता है, तो मैं जारी रखूंगा।
मैं कैसे खसखस के तहत iTerm को कॉन्फ़िगर करने के बारे में बात कर सकता हूं, ताकि यह ssh के साथ काम करने के लिए बेहद सुविधाजनक हो
कमांड लाइन के साथ काम करते समय बैश स्क्रिप्टिंग से बहुत समय कैसे बचा सकता है
स्क्रीन कमांड के पेशेवरों और इसे आसानी से कॉन्फ़िगर करने के तरीके के बारे में
और भूल गए दादा जेड-मॉडेम के बारे में भी और यह कैसे रोजमर्रा की जिंदगी में एक आधुनिक डेवलपर की मदद कर सकता है।