ग्राहक विन्यास
सेट अप ~/.ssh/config
के लिए होस्ट प्रविष्टियों को सेट करना ssh
वास्तव में आसान है और आपको बहुत परेशानी से बचाएगा। यहाँ एक उदाहरण है:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
इस उदाहरण में, हम सेटअप में digitaloceanbox
और github
और github.com
इसलिए है कि हम निम्न कमांड कर सकते हैं:
ssh github
ssh digitaloceanbox
यदि हम कॉन्फ़िगर फ़ाइल में निर्दिष्ट एक से अधिक उपयोगकर्ता के रूप में लॉगिन करना चाहते हैं, तो हम सिर्फ user@
भीख मांगने का काम करते हैं:
ssh
कुंजी उत्पन्न करना
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
ध्यान दें कि मैंने उस निजी कुंजी का पूरा पथ निर्दिष्ट किया है जिसे मैं संकेत देते समय उत्पन्न करना चाहता हूं ssh-keygen
। मैंने टिप्पणी ( -C
) भी परिभाषित की है जो मुझे दूरस्थ मशीनों पर कुंजियों को आसानी से पहचानने की अनुमति देती है।
यह दो फाइलें बनाएगा:
.ssh/digitalocean-rsa
- निजी कुंजी। इसे कभी साझा न करें ।
.ssh/digitalocean-rsa.pub
- सार्वजनिक कुंजी। यह वही है जो आप सर्वर पर स्टोर करने के लिए प्रमाणित करते हैं।
जब आप अपनी ssh
कुंजी प्रदान करते हैं , तो सुनिश्चित करें कि यह .pub
संस्करण है !! जब आप अपने साथ जोड़ते हैं ~/.ssh/config
, तो आपके द्वारा सिस्टम में जोड़ी गई सार्वजनिक कुंजी से मेल खाने वाली सही निजी कुंजी जोड़ना सुनिश्चित करें।
सर्वर कॉन्फ़िगरेशन
अधिकांश इंस्टॉलेशन सार्वजनिक कुंजी प्रमाणीकरण सक्षम होंगे। यदि आप सभी विली नीली चीजें करना शुरू करते हैं, तो आप कुछ समस्याओं में भाग सकते हैं। जहां ओपी उनकी समस्या में है, मैं सुझाव देता हूं कि ओपी /root/.ssh/
शुरू करने के लिए निर्देशिका को हटा देता है ।
यह अनुशंसित नहीं है कि आप ssh
रिमोट सिस्टम पर रूट उपयोगकर्ता तक पहुंचने के लिए उपयोग करते हैं। यह अनुशंसा की जाती है कि आप ssh
किसी अन्य उपयोगकर्ता में, और फिर अपने पासवर्ड ( sudo su -
) का उपयोग कर रूट करने के लिए आगे बढ़ें ।
का उपयोग कर होस्ट करने के लिए कुंजी जोड़ें ssh-copy-id
चाहे आप किसी अन्य उपयोगकर्ता को बनाने और ssh
उस उपयोगकर्ता या मूल उपयोगकर्ता के रूप में उपयोग करने का निर्णय लेते हों , निम्नलिखित ssh
सर्वर पर चाबियाँ रखने का अनुशंसित तरीका है :
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
यह sshd
निर्देशिका और आवश्यक अनुमतियों के साथ आवश्यक फ़ाइलों को बनाने की अनुमति देता है। इसका मतलब यह है कि आपके पास अनुमतियों को गड़बड़ करने या विवरण को याद रखने की आवश्यकता के लिए शून्य मौका है। बस चाबियाँ अपलोड करने के लिए उपकरण का उपयोग करें।
पासवर्ड प्रमाणीकरण अक्षम करें
कहा जा रहा है कि, एक बार जब आप अपने आप को चाबी देंगे और सत्यापित करेंगे कि आप कुंजियों का उपयोग करके कनेक्ट करने में सक्षम हैं, तो यह अनुशंसा की जाती है कि आप पासवर्ड प्रमाणीकरण को अक्षम करें sshd
और सेवा को पुनरारंभ करें:
- संपादित करें
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
नए उपयोगकर्ताओं के बारे में क्या?
यदि आप पासवर्ड प्रमाणीकरण अक्षम करते हैं, तो आप नए उपयोगकर्ताओं को कैसे कुंजी दे सकते हैं? एक तरीका /etc/skel
निर्देशिका में टेम्पलेट फ़ाइलों को जोड़ना है । एक बार जब आप उपयोगकर्ता को एक कुंजी देंगे, तो निम्न कार्य करें:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
- किसी भी फ़ाइल को संपादित करें
/etc/skel/.ssh/
ताकि वे रिक्त हों, जब तक कि आप हर नए बनाए गए उपयोगकर्ता के लिए स्वचालित रूप से अपने आप को कुंजी नहीं देना चाहते।
जब आप नए उपयोगकर्ता बनाते हैं sudo useradd -m newuser
, तो उस उपयोगकर्ता के पास होगा .ssh/authorized_keys
, जिसे आप संपादित कर सकते हैं और उसके पास उचित अनुमतियां होंगी।
डिबगिंग
आप sshd
लॉग फ़ाइल देख सकते हैं यह देखने के लिए कि कनेक्शन विफल क्यों है या अस्वीकार कर दिया गया है:
sudo tail -f /var/log/auth.log
जब आप इस आदेश को चला रहे हों, तो लॉगिन का प्रयास करने के लिए दूसरे टर्मिनल का उपयोग करें। कई बार दिए गए संदेश समस्या को ठीक करने या ऑनलाइन समाधान खोजने में मदद करने के लिए पर्याप्त होते हैं।