पासवर्ड रहित ssh काम नहीं कर रहा है


35

मैं सेटअप करने के लिए कोशिश की है कोई पासवर्ड-कम ssh b / w Aकरने के लिए Bऔर Bकरने के लिए Aके रूप में अच्छी तरह से। ssh-keygen -trsaदोनों मशीनों का उपयोग करके सार्वजनिक और निजी कुंजी उत्पन्न की । ssh-copy-idयूटिलिटी का उपयोग पब्लिक-कीज़ से कॉपी Aकरने के Bसाथ-साथ Bकरने के लिए भी किया जाता है A

Passwordless ssh से काम करता है Aके लिए Bलेकिन notसे Bकरने के लिए A। मैंने ~ / ssh / फ़ोल्डर की अनुमतियों की जाँच की है और सामान्य प्रतीत होता है।

A's .ssh फ़ोल्डर अनुमतियाँ:

-rw-------  1 root root 13530 2011-07-26 23:00 known_hosts
-rw-------  1 root root   403 2011-07-27 00:35 id_rsa.pub
-rw-------  1 root root  1675 2011-07-27 00:35 id_rsa
-rw-------  1 root root   799 2011-07-27 00:37 authorized_keys
drwxrwx--- 70 root root  4096 2011-07-27 00:37 ..
drwx------  2 root root  4096 2011-07-27 00:38 .

B's .ssh फ़ोल्डर अनुमतियाँ:

-rw------- 1 root root  884 2011-07-07 13:15 known_hosts
-rw-r--r-- 1 root root  396 2011-07-27 00:15 id_rsa.pub
-rw------- 1 root root 1675 2011-07-27 00:15 id_rsa
-rw------- 1 root root 2545 2011-07-27 00:36 authorized_keys
drwxr-xr-x 8 root root 4096 2011-07-06 19:44 ..
drwx------ 2 root root 4096 2011-07-27 00:15 .

Aएक ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25 Mar 2009) Bएक डेबियन मशीन है (OpenSSH_5.1p1 डेबियन -5, ओपनएसएसएच 0.9.8g 19 अक्टूबर 2007)

से A:

#ssh B

ठीक काम करता है।

से B:

#ssh -vvv A 
...
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/identity ((nil))
debug2: key: /root/.ssh/id_rsa (0x7f1581f23a50)
debug2: key: /root/.ssh/id_dsa ((nil))
debug3: Wrote 64 bytes for a total of 1127
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
root@192.168.122.1's password: 

जो अनिवार्य रूप से इसका मतलब है कि यह फ़ाइल का उपयोग करके प्रमाणित नहीं है /root/id_rsa। मैं ssh-addदोनों मशीनों में भी कमांड चलाता था ।

/etc/ssh/sshd_configफ़ाइल का प्रमाणीकरण हिस्सा है

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files

मैं विचारों से भाग रहा हूं। किसी भी सहायता की सराहना की जाएगी।


की सेटिंग क्या है PermitRootLoginमें /etc/ssh/sshd_configएक पर?
तानेली

@taneli:, yesअन्यथा उपयोगकर्ता को पासवर्ड के लिए प्रेरित नहीं किया जाएगा।
लेकेनस्टेयन

मेरे मामले में मुझे उबंटू 12.04 पर "/ etc / ssh / sshd_config" फ़ाइल में "IgnoreUserKnownHosts हाँ" को असहज करना पड़ा
मार्टिन मैगाकियन

जवाबों:


24

बस सुनिश्चित करें कि आपने निम्नलिखित प्रक्रिया का पालन किया है:

मशीन ए पर

एक टर्मिनल खोलें और निम्नानुसार कमांड दर्ज करें:

root@aneesh-pc:~# id

बस यह सुनिश्चित करने के लिए कि हम जड़ हैं।

यदि उपरोक्त कमांड आउटपुट कुछ नीचे है जैसे हम suकमांड का उपयोग करके रूट पर स्विच करते हैं

uid=0(root) gid=0(root) groups=0(root)

1) चाबियाँ बनाएँ।

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:7d:30:7d:67:db:58:51:42:75:78:9c:06:e1:0c:8d root@aneesh-pc
The key's randomart image is:
+--[ RSA 2048]----+
|          ooo+==B|
|         . E=.o+B|
|        . . .+.*o|
|       . . .  ...|
|        S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

मैंने किसी पासफ़्रेज़ का उपयोग नहीं किया है। यदि आपको एक की आवश्यकता है तो आप इसका उपयोग कर सकते हैं।

2) मशीन बी की .ssh/authorized_keysफ़ाइल में सार्वजनिक कुंजी की प्रतिलिपि बनाएँ

root@aneesh-pc:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@mylap
root@mylap's password: 

अब मशीन में लॉग इन करने की कोशिश करें ssh 'root@mylap', और:

~/.ssh/authorized_keys

यह सुनिश्चित करने के लिए कि हमने अतिरिक्त कुंजियाँ नहीं जोड़ी हैं जिनसे आप उम्मीद नहीं कर रहे थे।

उस mylap को hostname या उस मशीन के ip से बदलें जिसे आप लॉगिन करना चाहते हैं (यानी मशीन B)

3) बिना पासवर्ड के B से लॉगिन करें

root@aneesh-pc:~# ssh root@mylap
Warning: Permanently added 'mylap,192.168.1.200' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Jul 27 15:23:58 2011 from streaming-desktop.local
aneesh@mylap:~$

मशीन B पर

4) मशीन ए में वापस लॉगिन करने के लिए चाबी बनाएं

root@mylap:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:9f:e7:81:ed:02:f9:fd:ad:ef:08:c6:4e:19:76:b1 root@streaming-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          o   .  |
|         . + + o |
|        S o * E  |
|           = O . |
|            O +  |
|           + o o.|
|            . o+=|
+-----------------+

5) मशीन A की .ssh/authorized_keysफ़ाइल में सार्वजनिक कुंजी की प्रतिलिपि बनाएँ

root@mylap:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
root@aneesh-pc's password: 

अब मशीन में लॉग इन करने की कोशिश करें ssh 'root@aneesh-pc', और:

.ssh/authorized_keys

यह सुनिश्चित करने के लिए कि हमने अतिरिक्त कुंजियाँ नहीं जोड़ी हैं जिनसे आप उम्मीद नहीं कर रहे थे।

6) बिना पासवर्ड के ए में लॉगिन करें

ssh root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/


Last login: Tue Jul 26 18:52:55 2011 from 192.168.1.116

यदि आप इन चरणों को पूरा करने में सक्षम हैं तो आप कर रहे हैं। अब आपके पास ssh-key (सार्वजनिक-कुंजी) सक्षम लॉगिन वाली दो मशीनें हैं।


क्या सभी 6 चरणों को निर्दिष्ट किया गया है, चरण 5 से संबंधित सभी चीजों को सत्यापित किया है, लेकिन किसी भी तरह से चरण 6 काम नहीं कर रहा है
Cuurious

क्या आप इस कमांड का आउटपुट प्रदान कर सकते हैं: 'ssh -v root @ aneesh-pc'। उपयोगकर्ता नाम और होस्टनाम को अपने साथ बदलें।
अनीशपीपी

15
पता चला कि अपराधी /root(770) की अनुमति drwxrwx--- 70 root root 4096 2011-07-27 00:37 .. बहुत खुली थी। अनुमतियों को बदल दिया है drwxr-xr-xऔर अब यह काम कर रहा है। इस तथ्य की कल्पना नहीं कर सकते कि माता-पिता की निर्देशिका की अनुमति प्रभावित करती है ssh
कर्क राशि

1
@ गंभीर अच्छा कैच, मेरी होम डाइरेक्टरी ने 770भी सेट किया था , बदल गया है 750और दुनिया के साथ सब सही है :) मुझे हमेशा लगता है कि लिनक्स प्रीम्स उसी तरह रिवर्स में काम कर सकता है।
तारीफ जू 27'15

1
चरण 3 पर विफलता। ssh-copy-id एक पासवर्ड दर्ज करने के बाद चलती है, हालांकि मैं अभी भी पासवर्ड के लिए संकेत दिए बिना लॉगिन करने में असमर्थ हूं, मेरी अधिकृत_की फ़ाइल में मेरा .pub का पाठ है, और मैं लॉगिन पर कुंजी की पेशकश कर रहा हूं। । असफलता से। सभी निर्देशिकाओं पर अनुमति सही है।
मैट क्लार्क

44

पासवर्ड-कम ssh सेट करने के बाद , मुझे अभी भी अपने उपयोगकर्ता पासवर्ड के लिए कहा गया था। /var/log/auth.logदूरस्थ मशीन को देखते हुए इस मुद्दे को बताया:

sshd[4215]: Authentication refused: bad ownership or modes for directory /home/<user>

तो, यह सुनिश्चित करें कि यह सही है:

chmod o-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

जबकि अन्य उपयोगकर्ताओं को आपके .sshफ़ोल्डर पर लिखने के लिए मना करना स्पष्ट है, आपके घर के फ़ोल्डर के लिए समान आवश्यकता होने के कारण यह मुश्किल था।

इसके अलावा, जांच /etc/ssh/ssd_configसुनिश्चित करने के लिए RSAAuthenticationऔर PubkeyAuthenticationविकल्प अक्षम नहीं हैं। डिफ़ॉल्ट yesइतना है कि एक समस्या नहीं होनी चाहिए।


यह भी सुनिश्चित करें कि ऊपर सूचीबद्ध उन फोल्डर का स्वामित्व सही उपयोगकर्ता के पास है
GoalBased

एक बुरी तरह से बनाए गए realtek ड्राइवर संग्रह को खोलकर मैं इस स्थिति में आ गया। इसने मालिक को उस निर्देशिका में बदल दिया, जिसे मैं इसमें शामिल नहीं कर रहा था।
पॉल मैकमिलन

2
आपका होम फोल्डर लिखने योग्य नहीं हो सकता है क्योंकि अगर यह था, तो मैं सिर्फ आपका नाम ~/.sshकिसी और चीज़ में बदल सकता था , और फिर अपनी खुद की कुंजी के साथ एक नया बना सकता हूं।
केविन पेंको

2
बहुत बढ़िया! मेजबान मशीन पर लॉग में देखने के बारे में नहीं सोचा था। धन्यवाद!
user3099609

14

शायद सिर्फ एक उच्च स्तर की अनुमति समस्या है। आपको समूह और अन्य से अपने घर निर्देशिका और .shsh निर्देशिका के लिए लेखन अनुमतियाँ निकालने की आवश्यकता है इन अनुमतियों को ठीक करने के लिए, चलाएँ chmod 755 ~ ~/.sshया chmod go-w ~ ~/.ssh

यदि आपको अभी भी समस्या हो रही है, तो अपने लॉग पर निम्न grep जारी करें:

sudo egrep -i 'ssh.*LOCAL_USER_NAME' /var/log/secure

( LOCAL_USER_NAMEअपने स्थानीय उपयोगकर्ता नाम के साथ बदलें ...)

उम्मीद है कि आप अपनी समस्या के बारे में अधिक बताएंगे, यह मानते हुए कि sshd प्रमाणीकरण जानकारी सुरक्षित लॉग में लॉग की जा रही है, जो कि डिफ़ॉल्ट रूप से होनी चाहिए। यदि आपको ऐसी त्रुटियां दिखाई देती हैं जो इस तरह दिखती हैं:

DATE HOSTNAME sshd [1317]: प्रमाणीकरण ने इनकार कर दिया: खराब स्वामित्व या निर्देशिका / पथ / के लिए / कुछ / निर्देशिका के लिए मोड

यह ऊपर वर्णित समस्या है और आपको प्रश्न में निर्देशिका खोजने और समूह और अन्य से लिखने की अनुमति हटाने की आवश्यकता है।

इस कारण से कि आपको अपने घर निर्देशिका को लिखने की अनुमति को प्रतिबंधित करने की आवश्यकता होगी (भले ही अनुमतियाँ पहले से ही आपके .ssh और बाद की निर्देशिकाओं पर प्रतिबंधित हैं) यह अन्य उपयोगकर्ताओं को आपके .ssh निर्देशिका का नाम बदलने और एक नया बनाने की अनुमति देगा - हालांकि वह। के रूप में अनुपयोगी होगा (गलत अनुमतियों के कारण) अधिकांश उपयोगकर्ताओं के लिए फिक्स संभवतः निर्देशिका की सामग्री की जांच करने के बजाय अनुमतियों को बदलना होगा ...

TLDNR : अपने घर निर्देशिका के लिए समूह और / या अन्य के लिए लिखने की अनुमति देने से ssh बल पासवर्ड लॉगिन हो जाएगा।


2

क्या आप प्रत्येक मशीन पर रूट खाते का उपयोग कर रहे हैं? आमतौर पर उबंटू पर आप एक उपयोगकर्ता खाते का उपयोग करते हैं और आवश्यकतानुसार इसे sudo विशेषाधिकार देते हैं।

यदि आपका एक गैर रूट उपयोगकर्ता का उपयोग sudo chown $USER -R ~/.sshआपकी समस्या को ठीक कर सकता है

जाँच करने के लिए अन्य चीजें:

डबल चेक करें कि B का id_rsa.pubA में है authorized_keys

जाँच एक के /etc/ssh/sshd_configशामिल

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes

हां, मैंने उबंटू मशीन में रूट अकाउंट को सक्षम किया है, इसलिए दोनों सिस्टम में रूट यूजर के रूप में चल रहा है
Cuurious

हाँ, मुझे लगा, कुछ अन्य सुझावों को आपने अनदेखा कर दिया है। यह उत्पादन वास्तव में बेकार है, हालांकि यह नहीं है, इस बारे में कुछ भी नहीं कि आरएसए को क्यों स्वीकार नहीं किया गया।
स्मिथमैक्स

1
तुम सच क्यों rsa कुंजी स्वीकार नहीं किया गया कारण है कि मैं यहाँ आवश्यक तत्व है :)। sshd_config में उपर्युक्त तत्व शामिल हैं, मैंने /etc/ssh/sshd_configफ़ाइल सामग्री की सामग्री को शामिल करने के लिए प्रश्न संपादित किया है
Cuurious

-3

लक्ष्य परिवर्तन पर / in / etc / ssh / sshd_config पर

PermitRootLogin नहीं

सेवा मेरे

PermitRootLogin हाँ

फिर मारें -अपने sshd PID को:

root @ dzone2 # ps -ef | grep ssh रूट 28075 27576 0 नवंबर 17? 6:11 / usr / lib / ssh / sshd

root 17708 20618   0 10:09:30 pts/37      0:00 grep ssh root@dzone2 # kill -HUP 28075 root@dzone2 # ps -ef|grep ssh
root 17861 20618   0 10:09:44 pts/37      0:00 grep ssh
root 17852 27576   0 10:09:42 ?           0:00 /usr/lib/ssh/sshd

1
यह मदद नहीं करेगा। समस्या यह है कि पासवर्ड रहित एसएसएच लॉगिन (एक आरएसए कुंजी जोड़ी के साथ प्रमाणीकरण) काम नहीं कर रहा है। आपके द्वारा दिए गए निर्देश rootSSH लॉगिन कार्य करने के लिए हैं। यह पूरी तरह से असंबंधित है कि यह सवाल क्या है। इसके अलावा, यदि rootखाता सक्षम है (यह उबंटू में डिफ़ॉल्ट रूप से नहीं है), rootSSH लॉगिन को सक्षम करना काफी खतरनाक हो सकता है।
एलियाह कगन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.