मैं SSH की स्थापना कैसे करूं इसलिए मुझे होस्ट से कनेक्ट करते समय अपना पासवर्ड टाइप करने की आवश्यकता नहीं है?
~/.ssh/config
आवश्यकता थी जो अब आवश्यक है PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
मैं SSH की स्थापना कैसे करूं इसलिए मुझे होस्ट से कनेक्ट करते समय अपना पासवर्ड टाइप करने की आवश्यकता नहीं है?
~/.ssh/config
आवश्यकता थी जो अब आवश्यक है PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
जवाबों:
यदि आप GNOME का उपयोग करते हैं, तो सीहोर एप्लिकेशन ("पासवर्ड और एन्क्रिप्शन कुंजी") आपके लिए कर सकता है: फ़ाइल -> नया -> सुरक्षित शेल कुंजी ।
यदि आप टर्मिनल पसंद करते हैं, तो एक कीपर उत्पन्न करने के लिए चलाएं । मान्य कीपर प्रकार हैं:ssh-keygen -t <type>
कार्यक्रम आपसे पासफ़्रेज़ और नई कुंजी को सहेजने के स्थान के लिए पूछेगा । सुझाए गए डिफ़ॉल्ट पथ का उपयोग करने की अनुशंसा की जाती है क्योंकि अन्य सभी उपकरण वहां इसके लिए देखेंगे।
फिर से, सीहोरस अक्सर आपके लिए कर सकता है - मेरी व्यक्तिगत कुंजी में , अपने SSH कुंजी पर राइट-क्लिक करें और सुरक्षित शेल के लिए कॉन्फ़िगर करें कुंजी चुनें ।
या, ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host
टर्मिनल में।
या, पूरी तरह से मैन्युअल रूप से चरण-दर-चरण:
.ssh
दूरस्थ होस्ट पर दूरस्थ उपयोगकर्ता की होम निर्देशिका में नाम से एक निर्देशिका (यदि यह पहले से मौजूद नहीं है) बनाएँ ।authorized_keys
(यदि यह पहले से मौजूद नहीं है)।umask
सामान्य से अधिक उदार है, तो फ़ाइल को समूह-योग्य न बनाएं chmod go-w ~/.ssh ~/.ssh/authorized_keys
:।~/.ssh/id_rsa.pub
) की सामग्री को दूरस्थ ~/.ssh/authorized_keys
फ़ाइल में कॉपी (संलग्न) करें ।यदि आप अपनी निजी कुंजी को ssh एजेंट में लोड करते हैं , तो यह मेमोरी में डिक्रिप्ट की गई कुंजी को रखेगा। हम चाहते हैं कि जब भी हम किसी सर्वर में शेल करते हैं तो पासवर्ड को दोबारा दर्ज करने से बचें।
सबसे पहले, एजेंट को शुरू किया जाना चाहिए या लॉन्च किए गए संचार सॉकेट का मार्ग एक चर में लोड किया जाना चाहिए। टर्मिनल पर ssh- एजेंट चलाना , एजेंट चर को असाइन करने और सेट करने के लिए कमांड उत्पन्न करेगा। इन आदेशों को एक अलग टर्मिनल में उपयोग के लिए एक फ़ाइल में सहेजा जा सकता है। वैकल्पिक रूप से, कोई भी इन आदेशों को चला सकता है और उसी एजेंट को दूसरे टर्मिनल में फिर से उपयोग करने के बारे में भूल सकता है। उदाहरण के लिए: eval $(ssh-agent)
।
लोड हो रहा है कुंजी निष्पादित करने ssh-add
और इसे पास वाक्यांश देने का एक सरल मामला है ।
यदि आप GNOME का उपयोग कर रहे हैं, तो सूक्ति-कुंजीयन-डेमॉन आमतौर पर ssh- एजेंट के रूप में समान SSH एजेंट कार्यक्षमता प्रदान करता है, इसलिए आपको कुछ भी शुरू करने की आवश्यकता नहीं होनी चाहिए। GNOME स्वतः ही लॉगिन पर कुंजी को लोड और अनलॉक कर देगा।
यदि सब कुछ सही ढंग से किया गया था, तो उपयोग करना आपको पासवर्ड के लिए संकेत नहीं देगा। यदि एजेंट के साथ कुछ गलत है और कुंजी नहीं है, तो आपको कुंजी के लिए पास वाक्यांश में टाइप करने के लिए कहा जाएगा, न कि उपयोगकर्ता खाते के लिए पासवर्ड।ssh user@server
कुछ भी, जो संचार के लिए ssh का उपयोग करता है, उपयोगकर्ता खाते के पासवर्ड को दर्ज किए बिना काम करेगा जब एजेंट में सही कुंजी भरी हुई है। Scp , sftp और rsync जैसे प्रोग्राम इसका उपयोग करते हैं।
id_dsa
करते हैं id_rsa
, के बजाय का उपयोग करें , और ECDSA होगा id_ecdsa
।authorized_keys2
- लेकिन यह वास्तव में संभावना नहीं है कि आप उपयोग में 5.0 से अधिक पुराना कुछ भी पाएंगे।lsh
, ssh.com
और अन्य (यूनिक्स और नहीं) एसएसएच सर्वर इस ट्यूटोरियल में शामिल नहीं हैं।दूरस्थ होस्ट के लिए सार्वजनिक कुंजी की प्रतिलिपि बनाना:
ssh-copy-id -i ~ / .ssh / id_rsa.pub myaccount @ Remotehost # इस बिल्ली ~ /। ssh / id_rsa.pub | ssh myaccount @ Remotehost \ 'mkdir -p ~ / .ssh; बिल्ली >> ~ / .ssh / अधिकृत_की '# या यह
ssh-agent> ~ / .ssh / क्रॉस-टर्मिनल-एजेंट । ~ / .Ssh / पार टर्मिनल-एजेंट
ssh-copy-id
है जो सार्वजनिक कुंजी को लक्ष्य होस्ट में कॉपी करता है और अनुमतियाँ स्वचालित रूप से सेट करता है।
ssh-keygen -f ~/.ssh/id_rsa -N "";ssh-copy-id -i ~/.ssh/id_rsa username@server-ip-or-address
(बस बदलें username@server-ip-or-address
)।
आपने निर्दिष्ट नहीं किया कि आप किस यूनिक्स पर हैं, आप किस यूनिक्स से जुड़ रहे हैं, आप किस शेल का उपयोग कर रहे हैं, आप किस एसएसएच वेरिएंट का उपयोग कर रहे हैं, इत्यादि, इसलिए इसमें से कुछ को थोड़ा समायोजित करने की आवश्यकता हो सकती है; यह ओपनएसएसएच के हाल के संस्करणों पर आधारित है, जिसका उपयोग बहुत सारे यूनिक्स वेरिएंट पर किया जाता है।
यह सब आपके स्थानीय डेस्कटॉप सिस्टम से है।
ssh-keygen
Keyname के लिए डिफ़ॉल्ट का उपयोग करना सुनिश्चित करें। मेरा सुझाव है कि आप क्या करना है कि कुंजी पर पासफ़्रेज़ सेट, अन्यथा यह एक सुरक्षा समस्या है। "-t rsa" एक बुरा विचार नहीं होगा, लेकिन शायद इसकी जरूरत नहीं है।
ssh-copy-id username@server
वह आपको उस पासवर्ड के लिए पूछेगा जिसका उपयोग आप लॉग इन करने के लिए करेंगे, और आपके लिए अधिकृत_की सामान सेट करेंगे। (इसे हाथ से करने की आवश्यकता नहीं है)
फिर यह:
`ssh-agent`
या शायद यह:
exec ssh-agent sh
या:
exec ssh-agent bash
यह एक एसएसएच एजेंट शुरू करेगा जो आपकी कुंजी को पकड़ सकता है। कई आधुनिक यूनिक्स वेरिएंट पर, यदि आप ग्राफ़िकल रूप से लॉग इन हैं, तो यह पहले ही हो चुका होगा। पहला वैरिएंट (बैकटिक्स के साथ) बैकग्राउंड में एक ssh-Agent लगाता है और उससे बात करने के लिए पर्यावरण चर सेट करता है। दूसरे दो में एजेंट आपके लिए एक शेल चलाता है, ताकि जब आप शेल से बाहर निकलें, तो एजेंट बाहर निकल जाए।
कई आधुनिक यूनिक्स वेरिएंट में पहले से ही आपके लिए एक एजेंट चल रहा होगा, खासकर यदि आप ग्राफिक रूप से लॉग इन करते हैं। आप " ps aux | grep ssh-agent
" या " ps -ef | grep ssh-agent
" कोशिश कर सकते हैं ; अगर कुछ पहले से चल रहा है, तो उसका उपयोग करें।
फिर अंत में:
ssh-add
यह एक पासफ़्रेज़ के लिए पूछेगा; इसे आप ssh-keygen दिया। इसे ग्राफीय रूप से पूछने के तरीके भी हैं। और आप इसे लॉगिन करने के लिए ssh-Agent और ssh-add सामान को अपनी लॉगिन स्क्रिप्ट्स में डाल सकते हैं (इसे उपयोग करने के लिए शेल के आधार पर सेटअप अलग है), लेकिन कुछ यूनिक्स वेरिएंट (वर्तमान उबंटू लिनक्स, उदाहरण के लिए) स्वचालित रूप से ऐसा करते हैं, इसलिए आपको वास्तव में एक कुंजी बनाने की जरूरत है और इसे दूरस्थ होस्ट पर सेट करने के लिए ssh-copy-id का उपयोग करें।
अब, " ssh username@server
" किसी भी प्रमाणीकरण के लिए पूछे बिना काम करना चाहिए। पर्दे के पीछे, यह एक कुंजी का उपयोग कर रहा है जो ssh- एजेंट को पकड़े हुए है, और एजेंट से इसके लिए मैजिक साइनिंग ट्रिक्स करने के लिए कह रहा है।
यह संभव है कि विंडोज पर भी पुट्टी में ऐसा किया जाए।
एक बार जब आपके पास सार्वजनिक / निजी कुंजी जोड़ी हो तो सभी सेट करें (जैसा कि यहां अन्य उत्तर दिखाते हैं) पुट्टीगेन चलाते हैं। इसमें, आपके द्वारा पहले से सेट की गई मौजूदा निजी कुंजी लोड करें, और फिर इसे PuTTY निजी कुंजी (ppk) के रूप में सहेजें।
इसके बाद PuTTY में, उस सेव किए गए सेशन पर क्लिक करें, जिसे आप लोड करना चाहते हैं और ऑटो-लॉगिन पर क्लिक करें। यहां से कनेक्शन में जाएं -> बाएं फलक में डेटा, और उस दूरस्थ सर्वर के लिए उपयोगकर्ता नाम में "ऑटो-लॉगिन उपयोगकर्ता नाम" टाइप करें:
उसके बाद कनेक्शन -> एसएसएच -> प्रामाणिक में जाएं, और उस पुटके के लिए ब्राउज़ करें जिसे आपने पुट्टीगेन में बनाया था:
फिर सत्र पृष्ठ पर वापस जाएं और आपके द्वारा पहले लोड किए गए सत्र को बचाएं।
ServerFault पर एक समान प्रश्न से , मैं ssh-copy-id का उपयोग करने की सलाह दूंगा , जो आपके लिए प्रमाणीकरण कुंजी स्थापित करने के साथ जुड़े सभी चरणों को पूरा करता है:
ssh-copy-id एक स्क्रिप्ट है जो ssh का उपयोग एक दूरस्थ मशीन में प्रवेश करने के लिए करती है (संभवत: लॉगिन पासवर्ड का उपयोग करते हुए, इसलिए पासवर्ड प्रमाणीकरण सक्षम किया जाना चाहिए, जब तक कि आपने कई पहचानों का कुछ चतुर उपयोग नहीं किया हो)
यह दूरस्थ उपयोगकर्ता के घर की अनुमतियों को भी परिवर्तित करता है, ~ / .sh, और ~ / .sh / अधिकृत_कीज से समूह लेखन क्षमता को हटा देता है (जो अन्यथा आपको लॉग इन करने से रोकेगा, यदि दूरस्थ sshd के पास इसके विन्यास में StrictModes सेट है)।
यदि -i विकल्प दिया जाता है, तो पहचान फ़ाइल (~ / .ssh / पहचान.पब के लिए डिफॉल्ट) का उपयोग किया जाता है, भले ही आपके ssh- एजेंट में कोई कुंजी हो या नहीं।
आपको बस इतना करना है:
ssh-copy-id user@host
एक बार अपने पासवर्ड में टाइप करें, और आप जाने के लिए अच्छे हैं!
इसके अलावा, पहले से ही ssh चाबियाँ सेट करने के तरीके के बारे में बताया गया है, मैं किचेन को एक ssh- एजेंट कंसोल फ्रंटेंड के रूप में सुझाता हूं जो आपको लॉगिन के बजाय केवल सिस्टम प्रक्रिया के अनुसार एक ही हैंडल करने की अनुमति देता है।
मुझे पता है कि पहले से ही गनोम और केडीई उपकरण हैं जो ऐसा ही करते हैं लेकिन अगर आप कंसोल जंकी टाइप हैं तो यह बहुत अच्छा है (और इसका उपयोग अधिकांश यूनिक्स सिस्टम पर किया जा सकता है)।
इसका उपयोग करने के लिए, बस निम्नलिखित को अपने पास भेजें ~/.bashrc
(अन्य गोले के समान):
if type keychain >/dev/null 2>/dev/null; then
keychain --nogui -q <all your SSH/PGP keys>
[ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
[ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
http://linuxproblem.org/art_9.html
आपका लक्ष्य
आप अपने कार्यों को स्वचालित करने के लिए लिनक्स और ओपनएसएसएच का उपयोग करना चाहते हैं। इसलिए आपको होस्ट ए / उपयोगकर्ता से होस्ट बी / उपयोगकर्ता बी से एक स्वचालित लॉगिन की आवश्यकता है। आप किसी भी पासवर्ड को दर्ज नहीं करना चाहते हैं, क्योंकि आप शेल स्क्रिप्ट के भीतर से ssh को कॉल करना चाहते हैं।
मैं सच में बहुत लंबे ट्यूटोरियल के साथ निराश वास्तव में वास्तव में यह बहुत अच्छा लगता है के बाद यह बहुत ही छोटा ट्यूटोरियल लिखा है :)
test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"
scp ~/.ssh/id_rsa.pub destID@destMachine:/tmp/ #type password
ssh destID@destMachine #type password
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
ssh-keygen
। (यदि यह बताता है कि आपको एक प्रकार निर्दिष्ट करना है, तो करें ssh-keygen -t rsa
।) जब यह आपसे फ़ाइल का स्थान पूछता है, तो डिफ़ॉल्ट लें। जब यह आपको पासफ़्रेज़ के लिए कहता है, तो बिना पासफ़्रेज़ के हिट दर्ज करें।cat ~/.ssh/id_rsa.pub
(या जो भी डिफ़ॉल्ट फ़ाइल स्थान ssh-keygen
था, हालाँकि आपको अलग होने के लिए वास्तव में पुरानी ssh
स्थापना करनी होगी); आउटपुट को अपने क्लिपबोर्ड पर कॉपी करें।~/.ssh/authorized_keys
(यदि कहीं ~/.ssh
मौजूद नहीं है, तो slogin
यह सही अनुमतियों के साथ इसे बनाने का सरल, आसान तरीका है)। id_rsa.pub
इस फ़ाइल में अपना क्लिपबोर्ड ( अन्य होस्ट से युक्त ) चिपकाएँ ।यदि आप लिनक्स में टर्मिनल में यह सब करना चाहते हैं:
मेजबान पर
सीडी ~ /। ssh /
ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C ”कुछ टिप्पणी पाठ यदि आप चाहते हैं” -f id_AbitbitName
{} में आइटम विकल्प हैं, rsa या dsa का उपयोग करें और बिट आकार चुनें (बड़ा अधिक सुरक्षित है)
फिर आपको अनुमतियों को अधिकृत_की और अधिकृत_की_2 फाइलों में जोड़ना होगा।
बिल्ली id_AbitbitName.pub >> अधिकृत_की
cat id_AribteathName.pub >> प्राधिकृत_का_2
इसके बाद जिस बॉक्स से आप ssh करना चाहते हैं, उसमें id_AribtvelopName फ़ाइल डाउनलोड करें। यदि कनेक्टिंग बॉक्स यूनिक्स आधारित है, तो एक कॉन्फिग फ़ाइल आवश्यक हो सकती है (पोटीन में, ऊपर कोई व्यक्ति जो कवर किया गया है)।
कनेक्टिंग बॉक्स पर
आपकी कॉन्फ़िग फ़ाइल में - vim ~ / .ssh / config
मेजबान example.host.com # या आपके कंप्यूटर का नाम
उपयोगकर्ता नाम
आइडेंटिफ़ाइल ~ /। Ssh / id_AbitbitName
कॉन्फ़िगरेशन फ़ाइल को 600 की अनुमतियों की आवश्यकता है। SSh फ़ोल्डर को 700 की आवश्यकता है।
आशा है कि अगर आप कॉन्फ़िगर मुद्दे में चलाने में मदद करता है जो बहुत कुछ छोड़ दिया गया है।