ssh कुंजी का उपयोग नहीं कर सकता, लेकिन पासवर्ड काम करता है


1

मेरे पास मेरे एससीएम के लिए एक उबंटू सर्वर चल रहा है, और मैं विंडोज़ कंप्यूटर पर अपना विकास कर रहा हूं। इस सेटअप ने किसी भी समस्या के लिए लंबे समय तक काम किया है। लेकिन अब मुझे एक अजीब समस्या आती है।

समस्या तब शुरू हुई जब मुझे सर्वर पर गिट रिपॉजिटरी के एक्सेस अधिकारों को बदलने की आवश्यकता थी (मुझे यह मत बताइए कि यह बेवकूफी थी chmod संपूर्ण होम डाइरेक्टरी ... मुझे पहले से पता है)। उसके बाद, हर बार मैं अपनी सार्वजनिक कुंजी का उपयोग करके सर्वर को ssh (git समावेशी) के माध्यम से एक्सेस करने का प्रयास करता हूं। मुझे निम्नलिखित त्रुटि मिलती है:

$ ssh git@192.168.0.240
open log failed: Permission denied
Connection to 192.168.0.240 closed.

हालाँकि, जब मैं सर्वर से कनेक्ट करने की कोशिश करता हूं, केवल पासवर्ड का उपयोग करके, सब कुछ उम्मीद के मुताबिक काम करता है:

मैंने -vvv के साथ sshcommand चलाने की कोशिश की है। यह मुझे कोई विचार नहीं देता है कि समस्या की तलाश कहाँ की जाए। शायद आप इससे कुछ देख सकते हैं।

...
debug2: channel 0: request shell confirm 0
debug2: fd 3 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug2: channel 0: rcvd ext data 35
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd close
debug2: channel 0: close_read
debug2: channel 0: input open -> closed
debug3: channel 0: will not send data after close
debug2: channel 0: obuf_empty delayed efd 6/(35)
open log failed: Permission denied
debug2: channel 0: written 35 to efd 6
debug3: channel 0: will not send data after close
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
  #0 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cfd -1)

कोई विचार?


Ps। मैंने इसी सेटअप के साथ दूसरे कंप्यूटर से भी इसका परीक्षण किया है, और उसी परिणाम के साथ।
nikolaj

2 प्रश्न: 1. क्या आपका authorized_keys किसी प्रकार की मजबूर कमांड को परिभाषित किया गया है? 2. जाँच करें auth.log। क्या प्रारंभिक लॉगिन काम करता है?
cpast

जवाबों:


1

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

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa ~/.ssh/authorized_keys
chmod 644 ~/.ssh/id_rsa.pub

अगर मुझे ठीक से याद है, ssh पर अनुमतियाँ भी जाँचता है ~, जो मालिक (एसीएल के माध्यम से भी नहीं) की तुलना में किसी के द्वारा लिखित नहीं है
mpy

@ क्या आपको यकीन है? यह अजीब लगता है, मुझे सहयोग करते समय अपने नेटवर्क पर अन्य उपयोगकर्ताओं द्वारा अपने घर को लिखने योग्य चुनने में सक्षम होना चाहिए। यह थोड़ा अधिक लगता है कि ssh को इसकी आवश्यकता होनी चाहिए।
terdon

काफी सही, यह सामान्य ज्ञान है। हालाँकि मैंने इसे कठिन तरीके से सीखा था ... लेकिन जैसा कि मैंने कहा, ठीक विवरण के बारे में मुझे यकीन नहीं था। इसके लिए कुछ फ़िदलिंग की ज़रूरत थी, लेकिन मैं इसे फिर से बना सकता था। कोड इंडिकेशन से लाभ उठाने के लिए मैं इसका एक और उत्तर दूंगा।
mpy

1

के अतिरिक्त terdons का उत्तर , ssh कुंजी के साथ कुछ अजीब व्यवहार भी होता है, यदि ~ दूसरों के द्वारा लिखा जा सकता है।

मान लें, आपने कुंजी लॉगिन का उपयोग करने के लिए सफलतापूर्वक ssh सेट किया है:

user@local:~> ssh remote
Last login: Thu Mar  7 17:39:18 2013 from local
user@remote:~>

अब अपने घर को किसी अन्य उपयोगकर्ता द्वारा लिखने योग्य बनाएं दूरस्थ मशीन:

user@remote:~> getfacl .
# file: .
# owner: user
# group: users
user::rwx
group::r-x
other::r-x
user@remote:~> setfacl -m u:coauthor:rwx .
user@remote:~> exit
user@local:~>

ठीक है, अब रिमोट में लॉग इन करने के लिए फिर से कोशिश करें:

user@local:~> ssh remote
user@remote's password:

ssh अब पासवर्ड के लिए संकेत! ACL निकालें, और voilà ssh कुंजी फिर काम कर रही है।

[मेरा काम तब सहयोग के लिए एक उपनिर्देशिका का उपयोग करना था।]


क्रेग सैंडर्स जानते हैं कारण , यह व्यवहार निर्भर करता है StrictModes yes sshd_config में। का हवाला देते हुए man 5 sshd_config:

StrictModes निर्दिष्ट करता है कि sshd (8) को स्वीकार करने से पहले फ़ाइल मोड और उपयोगकर्ता की फ़ाइलों और होम निर्देशिका के स्वामित्व की जांच करनी चाहिए   लॉग इन करें। इस                आम तौर पर वांछनीय है क्योंकि नौसिखिए कभी-कभी गलती से अपनी निर्देशिका या फाइलों को विश्व-योग्य छोड़ देते हैं।   डिफ़ॉल्ट "हाँ" है।


@terdon: उस कारण को वापस पहचानने में मुझे काफी समय लगा।
mpy

अब यह फिर से काम कर रहा है। सबको शुक्रीया। इसका समाधान एक पुस्तकालय (लेकिन .itolite पुस्तकालय) के उपयोग के अधिकार के कारण था। मैंने इसे बदल दिया 750
nikolaj

@ user49884 क्या आप जवाब के रूप में अपना समाधान पोस्ट कर सकते हैं
terdon

@mpy वाह, एक अन्य उपयोगकर्ता द्वारा भी इसे लिखने योग्य है? जानकार अच्छा लगा।
terdon
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.