Ubuntu सर्वर पर एक नया SSH उपयोगकर्ता बनाएँ


104

बस एक नया वर्चुअल उबंटू सर्वर बनाया और मैं इसे उत्पादन उपयोग के लिए सख्त करने की प्रक्रिया में हूं। वर्तमान में मेरा रूट खाता है। मैं निम्नलिखित करना चाहता हूं:

  • एक नया उपयोगकर्ता बनाएं ( jimबाकी के लिए उन्हें कॉल करें)। मैं चाहता हूं कि उनके पास एक /home/निर्देशिका हो।
  • jimSSH को एक्सेस दें ।
  • रूट jimकरने की अनुमति दें, suलेकिन sudoसंचालन नहीं करें ।
  • रूट SSH पहुँच बंद करें।
  • जानवर-हमलों को रोकने में मदद करने के लिए SSHd को एक गैर-मानक पोर्ट पर ले जाएं।

मेरी समस्या पहले दो मदों के साथ है। मैंने पहले से ही पाया है, useraddलेकिन किसी कारण से, मैं एसएसएच पर इसके साथ बनाए गए उपयोगकर्ता के रूप में लॉग इन नहीं कर सकता। क्या मुझे इसे अनुमति देने के लिए SSHd को हराने की आवश्यकता है?


नमस्ते! मैं आपको सर्वर में मदद कर सकता हूं, मुझे नहीं पता कि एसएसएच के साथ आपकी समस्या क्या है, क्योंकि मेरे लिए डिफ़ॉल्ट कॉन्फिगरेशन कभी भी मेरे कनेक्शन को मना नहीं करता है। आप आदमी को 5 नोलिन देख सकते हैं , यह लिखता है, कि अगर / etc / nologin मौजूद है, तो आप केवल रूट से लॉग इन कर सकते हैं। सामान्य रूप से लॉगिन करने का प्रयास करें, फिर परिणाम लिखें।
एंटीवायरल

उपयोगकर्ता का खोल क्या है? यह बिन / बाश है? चेक इन / आउट / पासवर्ड। सुनिश्चित करें कि यह / dev / null या / bin / false नहीं है।
LFC_fan

हां LFC_fan, या / etc / nologin भी। का प्रयोग करें (sudo) बिल्ली / etc / passwd | grep jim
एंटीवायरल

1
@B। रोलैंड मेरे पास एक /etc/nologinफ़ाइल है लेकिन यह खाली है। मैं इसे नष्ट कर दिया और ssh को पुनः आरंभ लेकिन यह अभी भी सिर्फ जवाब है Permission denied, please try again.जब मैं कोशिश करते हैं और लॉग इन करें।
ओली

@LFC_fan यह / bin / bash है
ओली

जवाबों:


99

संपादित करें (रूट के रूप में) /etc/ssh/sshd_config। इसे निम्नलिखित में जोड़ें:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234SSH पोर्ट 1234 को सुनने का कारण बनता है। आप 1 से 65535 तक किसी भी अप्रयुक्त पोर्ट का उपयोग कर सकते हैं। यह एक विशेषाधिकार प्राप्त पोर्ट (पोर्ट 1-1024) चुनने की सिफारिश की जाती है जो केवल रूट द्वारा उपयोग किया जा सकता है। यदि आपका SSH डेमन किसी कारण से काम करना बंद कर देता है, तो एक बदमाश आवेदन कनेक्शन को रोक नहीं सकता है।

PermitRootLogin डायरेक्ट रूट लॉगिन को रोकता है।

AllowUsers jimउपयोगकर्ता jimको SSH के माध्यम से लॉगिन करने की अनुमति देता है । अगर आपको हर जगह से लॉगिन नहीं करना है, तो आप jim को IP एड्रेस (अपने वास्तविक आईपी एड्रेस के साथ 1.2.3.4 की जगह) पर सीमित करके इसे और अधिक सुरक्षित बना सकते हैं:

AllowUsers jim@1.2.3.4

कॉन्फ़िगरेशन फ़ाइल में परिवर्तन /etc/ssh/sshd_configतुरंत लागू नहीं होते हैं, कॉन्फ़िगरेशन को फिर से लोड करने के लिए, चलाएं:

sudo service ssh reload

10
+1: नोट: ये निर्देश अभी भी उबंटू के नए संस्करणों (जैसे 13.04) पर लागू हैं। आप चाहते हैं, तो rootलॉगिन, तथापि, (शायद आप अभी भी सर्वर की स्थापना कर रहे हैं), तो आप सेट करना होगा PermitRootLoginकरने के लिए yesहै और यह भी जोड़ने rootके लिए AllowUsers
JRG- डेवलपर

4
इस उपयोगकर्ता के लिए पासवर्ड क्या है?
वोल्फपैक'08

मेरा VPS पोर्ट 22 पर SSH लॉगिन के लिए रूट पासवर्ड के साथ आता है। उत्तर देने के लिए sshd_config परिणाम को रूट में लॉग इन करने में असमर्थ होने के कारण। क्या यह इसलिए है कि मैंने jim के लिए पोर्ट 22 का उपयोग किया है, या कोई अन्य कारण है?
वोल्फपैक'08

1
@Lekensteyn मैं सिर्फ Ubuntu करने के लिए कोई नया उपयोगकर्ता जोड़ना पाया है खुद को उस उपयोगकर्ता के लिए एक ssh खाता बनाता है .... useradd -m -G sudo,adm -s /bin/bash mecharokऔरpasswd mecharok
Wolfpack'08

3
@ Wolfpack'08 AllowUsers username1,username2उन उपयोगकर्ताओं के लिए SSH लॉगिन को प्रतिबंधित करने के लिए उपयोग करें । सुनिश्चित करें कि sshdपुनः लोड किया गया है। यदि यह मदद नहीं करता है, तो कृपया एक नया प्रश्न बनाएं।
लीकेन्स्टाइन

96

SSH निर्देशिका और फ़ाइल अनुमतियों के बारे में बहुत उपयुक्त है। निश्चित करें कि:

  1. निर्देशिका /home/username/.ssh के पास "700" की अनुमति है और उपयोगकर्ता के स्वामित्व में है (रूट नहीं!)
  2. / होम / उपयोगकर्ता नाम / ssh / अधिकृत_की अनुमति है "600" और उपयोगकर्ता के स्वामित्व में है

अपनी सार्वजनिक कुंजी को अधिकृत_की फ़ाइल में कॉपी करें।

sudo chown -R username:username /home/username/.ssh
sudo chmod 0700 /home/username/.ssh
sudo chmod 0600 /home/username/.ssh/authorized_keys

नहीं है कोई करने के लिए / etc / ssh / ssh_config उपयोगकर्ता को जोड़ने की जरूरत है।


1
मेरी समस्या चोक थी, मैंने ~./sshरूट के रूप में बनाया और उपयोगकर्ता को कभी भी स्वामित्व नहीं दिया।
18

1
मेरी समस्या यह थी कि मैं /root/.ssh/authorized_keysइसके बजाय उपयोग करने की कोशिश कर रहा था /home/bob/.ssh/authorized_keys
एलेक्स डब्ल्यू

मैं पुष्टि कर सकता हूं: हमारे VPS होस्टिंग पर संपादन करने की कोई आवश्यकता नहीं थी ssh_config। उस निर्देशिका और फ़ाइल को सेट करना पर्याप्त था।
सुपरजोस

2
मेरे लिए यह chmod 755 /home/username/.ssh होना चाहिए अन्यथा यह काम नहीं करेगा।
जिम डब्ल्यू

उपयोगकर्ता (या sudo su --login {user}) के रूप में लॉगिन करने और चलाने के लिए बहुत आसान है ssh-keygen-> ".ssh" फ़ोल्डर, कुंजी + प्रमाणपत्र और अनुमतियाँ पूरी हो गई हैं। अपने निर्देशानुसार अधिकृत_कीप्स बनाएं।
bshea

13

/var/log/auth.logएसएसएच (या पीएएम) लॉगिन प्रयास को अस्वीकार कर रहा है, इसके लिए सुराग होंगे । अतिरिक्त सुराग ssh क्लाइंट के -vसाथ विकल्प का उपयोग करके पाया जा सकता है । कई सामान्य स्थितियाँ, कुछ अन्य उत्तरों में उल्लिखित हैं:

  • उपयोगकर्ता खाते में पासवर्ड की कमी है, या अन्यथा अक्षम है (देखें man passwd, पासवर्ड रीसेट करने की कोशिश करें या सामग्री की जांच करें /etc/shadow)।
  • /etc/ssh/sshd_configलॉगिन अस्वीकृत करने के लिए कॉन्फ़िगर किया गया है ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAMआदि, देख man sshd_config)।
  • उपयोगकर्ता के शेल में सूचीबद्ध नहीं है /etc/shells
  • निर्देशिका या फाइलों पर विभिन्न अनुमति समस्याओं SSH संचालन से संबंधित: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*, आदि

मैं नए उपयोगकर्ताओं को जोड़ने के लिए adduser ( useradd के बजाय ) का उपयोग करने की भी सलाह दूंगा ; यह विभिन्न डिफ़ॉल्ट खाता सेटिंग्स के बारे में थोड़ा अधिक अनुकूल है।

जब तक उपयोगकर्ता adminसमूह का हिस्सा नहीं होगा, तब तक वे रूट करने के लिए sudo नहीं कर पाएंगे । उन्हें इस्तेमाल करने के लिए सु , आप एक रूट पासवर्ड (सेट करने की आवश्यकता होगी passwd root), जिसके बाद मैं सेटिंग की सिफारिश PermitRootLogin=noमें /etc/ssh/sshd_config


महान जवाब के लिए बहुत बहुत धन्यवाद- विशेष रूप से "एड्यूसर" ने बहुत मदद की!
vishal.biyani

11

मैं गलत हो सकता है लेकिन मुझे हमेशा सर्वर डेमॉन को स्थापित करना होगा इससे पहले कि मैं कनेक्ट कर सकता हूं (कम से कम डेस्कटॉप पर) ssh डिफ़ॉल्ट रूप से स्थापित है लेकिन यह सिर्फ क्लाइंट है

यह कमांड सर्वर को स्थापित करता है

sudo apt-get install openssh-server

आप पोर्ट बदल सकते हैं और रूट लॉगिन को एडिट करके रोक सकते हैं

/etc/ssh/sshd_config

हालांकि आपको सेवा को फिर से शुरू करना होगा।

sudo service ssh restart


यह एक वर्चुअल सर्वर (VPS) है इसलिए SSH डिफ़ॉल्ट रूप से स्थापित है। यह सर्वर के लिए मेरा एकमात्र इंटरफ़ेस है। और आप sudo /etc/init.d/ssh reloadइसके बजाय कॉन्फ़िगरेशन को फिर से लोड कर सकते हैं , लेकिन फिर भी अच्छी जानकारी।
ओली

8

जब तक आपने पासवर्ड सेट नहीं किया है, जिम का SSH एक्सेस नहीं होगा। रूट निष्पादन के रूप में:

grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'

यदि यह कमांड एक "!" वर्ण तब इस खाते के लिए लॉगिन अक्षम है। passwd jimरूट के रूप में निष्पादन आपको एक नए और पुष्टि किए गए पासवर्ड स्ट्रिंग के लिए संकेत देगा, जिसके बाद ऊपर दिए गए grep कमांड को हैम स्ट्रिंग को jim के लिए पासवर्ड का प्रतिनिधित्व करना चाहिए।

यह भी सुनिश्चित करें कि jim में एक लॉगिन शेल है, जो डिफ़ॉल्ट रूप से सेट है, और एक होम डायरेक्टरी मौजूद है।

कृपया SSH सर्वर सेटिंग्स को संशोधित करने की जानकारी के लिए lekensteyn के पोस्ट पर ध्यान दें।


"यदि यह कमांड एक रिटर्न देता है"! तो चरित्र इस खाते के लिए लॉगिन अक्षम है "ध्यान दें कि इसका मतलब यह नहीं है कि आप एसएसएच नहीं कर सकते हैं; केवल यह कि आप इसे पासवर्ड के साथ नहीं कर सकते (बनाम अपनी सार्वजनिक कुंजी के साथ)।
bfontaine

3

मेरे मामले में मेरे पास एक समूह था जिसे प्रवेश की अनुमति थी और उपयोगकर्ता इसका हिस्सा नहीं था। इससे मेरे लिए हल हो गया।

उपयोगकर्ता के साथ ऊपर दिए गए उदाहरण का उपयोग करना jimऔर समूह का सदस्य मान लें jimक्योंकि यह केवल समूह है ( आप जिस समूह का हिस्सा हैं उसे खोजने के लिए groupsलॉग इन करते समय आदेश जारी करें jim)। मेरे में /etc/ssh/sshd_configफ़ाइल मैं था AllowGroups sshusersप्रवेश और इस प्रकार जोड़ने के लिए आवश्यक jimकरने के लिए sshusersसमूह। नीचे बताया गया है कि यह कैसे पूरा होगा:

usermod -a -G sshusers jim

अपने कॉन्फ़िगरेशन के लिए अपने समूह और उपयोगकर्ता को उपयुक्त रूप में बदलें।


1
आपको ऐसे स्रोत का संदर्भ देकर अपने उत्तर में सुधार करना चाहिए, जो आपके उदाहरण को बेहतर ढंग से समझाता है या प्रासंगिक जानकारी जोड़कर ओपी के मूल प्रश्न पर आपके उदाहरण को प्रस्तुत करता है। उदाहरण के लिए, jimउपयोगकर्ता को संदर्भ प्रदान करने में मदद करने के लिए डमी उपयोगकर्ता के रूप में निर्दिष्ट किया गया है। यहाँ लेख इसे अच्छी तरह से समझाता है।

0

कुछ ऐसे उदाहरण हो सकते हैं PasswordAuthenticationजो डिफ़ॉल्ट रूप से अक्षम हैं।

कृपया जाँचें /etc/ssh/sshd_configऔर सुनिश्चित करें कि PasswordAuthenticationविशेषता सेट है yes


0

@Lekensteyn मैं सवाल जवाब के लिए एक टिप्पणी छोड़ने में असमर्थ हूं क्योंकि मेरे पास प्रतिष्ठा नहीं है - लेकिन मैंने प्रयास किया

AllowUsers existingUser,newUser

मेरे / etc / ssh / sshd_config फ़ाइल के लिए और अब मैं अपने मौजूदाUser या newUser दोनों के साथ ssh नहीं कर सकता।


मैं आपका दर्द समझता हूं: DI का एक ही मुद्दा था। समाधान:AllowUsers existingUser@* newUser@*
Atsmail Atkurt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.