बिना पासवर्ड के SSH को लोकलहोस्ट कैसे करें?


17

संपादित करें: वास्तव में क्या किया गया था।

मुझे localhostएक पासवर्ड के बिना SSH की आवश्यकता है , इसे करने का सामान्य तरीका (सार्वजनिक कुंजी के साथ) काम नहीं करता है।

user@PC:~$ rm -rf .ssh/*
user@PC:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ ssh-copy-id -i localhost 
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh-agent $SHELL
user@PC:~$ ssh-add -L
The agent has no identities.
user@PC:~$ ssh-add 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
user@PC:~$ ssh-add -L
ssh-rsa ...MY KEY HERE

user@PC:~$ ssh-copy-id -i localhost 
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh localhost echo 'testing'
user@localhost's password: 

user@PC:~$ 

तो जैसा कि आप पिछले आदेश में देख सकते हैं यह अभी भी पासवर्ड पूछ रहा है !!! मैं कैसे इसे ठीक कर सकता हूं ?? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2:

Sshd के बारे में कुछ जानकारी जोड़ना

user@PC:~$ cat /etc/ssh/sshd_config | grep Authentication
# Authentication:
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
ChallengeResponseAuthentication no
# PasswordAuthentication yes
#KerberosAuthentication no
#GSSAPIAuthentication no
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

EDIT3: $ ssh -vv लोकलहोस्ट का परिणाम

$ssh -vv localhost
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
user@localhost's password: 

EDIT4:

यदि फ़ाइलें समान हैं और md5sum सहमत हैं तो बस जाँच कर रहा है


क्या आपके पास RSAAuthentication yesऔर PubkeyAuthentication yesआपके / etc / ssh / sshd_config में है? Ssh -vv लोकलहोस्ट क्या दिखाता है? मैं सिर्फ एक 10.04 बॉक्स पर यह कोशिश की और कोई समस्या नहीं थी ..
दून

हाय दून, वास्तव में .. मेरे पास दोनों हाँ करने के लिए हैं .. मैंने प्रश्न में ssh -vv का आउटपुट जोड़ा।
3

यदि आपके पास पहले से ही पहुंच है, तो आपको लोकलहोस्ट को ssh करने की आवश्यकता क्यों है?
10

समानांतर प्रसंस्करण सॉफ्टवेयर्स स्थानीय ssh / rsh
Canesin

कृपया प्रश्न में उत्तर पोस्ट न करें या शीर्षक में "SOLVED" डालें। आपने उत्तर प्रदान करके सही काम किया है। एक बार जब आप उत्तर स्वीकार कर लेते हैं तो सिस्टम दिखाएगा कि समस्या हल हो गई है।
क्रिस

जवाबों:


10

सबसे पहले, आपको समझना चाहिए कि आपका क्या करना है:

user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'

आप सार्वजनिक कुंजी .ssh/id_rsa.pubको ssh के माध्यम से कॉपी कर रहे हैं , उसी होस्ट पर (जो कि लोकलहोस्ट है, वही होस्ट है)। यदि आप localhostकिसी अन्य होस्ट के साथ प्रतिस्थापित करते हैं, तो यह अधिक समझ में आता है (लेकिन यदि आप यह सीखने के लिए प्रयास कर रहे हैं कि यह कैसे करना है, तो यह ठीक है)।

एक बार जब आपके पास दूरस्थ होस्ट पर आपकी सार्वजनिक कुंजी की एक प्रति (या आप जिस एक में हैं), तो आपको यह सुनिश्चित करना होगा कि आप इसे अपने वास्तविक होस्ट, कॉलिंग ssh-agent/ ssh-add: में प्रमाणीकरण के लिए उपयोग करें।

$ eval `ssh-agent`
$ ssh-add

फिर, यदि आपने पासफ़्रेज़ प्रदान किया है, तो आपसे अनुरोध किया जाएगा कि इसके बाद प्रवेश करें ssh-add। यदि आपने पासफ़्रेज़ के बिना एक निजी कुंजी उत्पन्न की है, तो यह वही है।


हां, मैं कमांड्स को समझता हूं, मैंने सिर्फ यह स्पष्ट करने के लिए यह तरीका रखा है कि मैंने चाबी के साथ सामान्य सामान किया। मैं ssh-ऐड ... यह पदबंध (के रूप में मैं निर्माण में प्रयोग नहीं की) फिर से, कर रही है, पूछना नहीं .. लेकिन $ ssh स्थानीय होस्ट ls, यह पासवर्ड के लिए पूछता किया
Canesin

इसलिए यदि आपने निष्पादित किया है ssh-add, तो कृपया अपने प्रश्न को संपादित करें और आपने जो कुछ भी किया है उसे डाल दें। आप जितनी अधिक जानकारी देंगे, उत्तर उतना ही बेहतर और तेज होगा।
तोरियन

इसके लिए खेद है, अब ठीक हो गया है .. मैंने टर्मिनल को जोड़ा, सभी को यहाँ पेस्ट करने के लिए फिर से किया था ..
कैनसिन

एक लाख बार धन्यवाद! BTW, क्यों " eval"?
IProblemFactory 10

3

समस्या का पता लगाया है।

डिबगिंग के साथ सर्वर चलाना:

$sshd -Dd

मैंने पाया कि यह ओडिसी_की पढ़ने में सक्षम नहीं था

$chmod 750 $HOME

ठीक कर दिया।


पिछली फ़ाइल झंडे क्या थे?
bbaja42

2

निम्न चरण करें

ssh-keygen -t rsa -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

डिफ़ॉल्ट फ़ाइल और खाली पासफ़्रेज़ का उपयोग करें (अगले 2 चरणों में बस एंटर दबाएं)

# start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Agent pid 59566
ssh-add 

~ / .Sh / id_rsa.pub की सामग्री को ~ / .ssh / अधिकृत_की कॉपी करें

अनुमतियाँ निम्नलिखित हैं सुनिश्चित करें

 ls -l .ssh/
 total 20
-rw-r--r--. 1 swati swati  399 May  5 14:53 authorized_keys
-rw-r--r--. 1 swati swati  761 Jan 12 15:59 config
-rw-------. 1 swati swati 1671 Jan 12 15:44 id_rsa
-rw-r--r--. 1 swati swati  399 Jan 12 15:44 id_rsa.pub
-rw-r--r--. 1 swati swati  410 Jan 12 15:46 known_hosts 

इसके अलावा, .shsh निर्देशिका के लिए अनुमति सुनिश्चित करें। यह भी महत्वपूर्ण है

drwx------.   2 swati swati    4096 May  5 14:56 .ssh

1
$ घर पर 750 अनुमतियाँ सुनिश्चित करें
swatisinghi

मेरी मशीन (फेडोरा 28) authorized_keysपर 0600 की अनुमति स्थापित करने से समस्या का समाधान हो जाता है, जबकि .sshनिर्देशिका की अनुमति से लोकलहोस्ट को प्रभावित करने पर कोई प्रभाव नहीं पड़ता है
चांग कियान

1

सर्वर कॉन्फिगरेशन को सरल बनाएं

मुझे लगता है कि आपको पासवर्ड-आधारित प्रमाणीकरण को अक्षम करने की आवश्यकता हो सकती है। यह एक sshd_config है जिसका मैं उपयोग करता हूं

Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE

पहले कम से कम कुछ करने की कोशिश करें, फिर अतिरिक्त क्षमताओं की आवश्यकता होने पर इसे जोड़ें।


अपडेट करें:

सर्वर लॉग की जाँच करें

आपके EDIT3 से मैं देखता हूं कि क्लाइंट द्वारा पासवर्ड-आधारित प्रमाणीकरण का प्रयास करने से पहले सार्वजनिक कुंजी प्रमाणीकरण विफल हो जाता है। आपके सर्वर के syslog में sshd के कुछ संदेश हो सकते हैं जो इस पर कुछ प्रकाश डालते हैं।

पुनः लोड किए गए कॉन्फ़िगरेशन को बदल दिया

sshdकिसी भी कॉन्फ़िगरेशन परिवर्तन को फिर से लोड करने के लिए संकेत करना याद रखें । उदाहरण के लिएkill -HUP $(cat /etc/sshd.pid)


मुझे लगता है कि जब वह पासवर्ड के बिना भी नहीं मिल सकता है तो वह पासवर्ड ऑथेंटिकेशन को
डिसेबल कर

@ एमालगोविंस: मेरे प्रारंभिक उत्तर को पोस्ट करने के बाद से इस प्रश्न को बड़े पैमाने पर संपादित किया गया है। मुझे लगता है कि मैं इस जवाब को हटा सकता हूं।
RedGrittyBrick

0

उपरोक्त पोस्ट के बारे में, उसी समस्या का सामना करते हुए, मैंने अभी-अभी लाइन बदली है

PasswordAuthentication सं

/ etc / ssh / sshd_config फ़ाइल में और यह काम किया।

इसके अलावा, शायद यह उपयोग करने के लिए बेहतर है

सेवा sshd पुनरारंभ

sshd config परिवर्तनों को पुनः लोड करने के लिए।


0

Red Hat Enterprise Linux 6.5 SELinux सुविधा के लिए एक अन्य उपाय sshd को $ HOME / .ssh पढ़ने से रोकना है, restorecon का उपयोग करना है, यहाँ मेरा उत्तरदाता देखें /superuser//a/764020/213743



0

मुझे एक ही समस्या थी, मैंने पासवर्ड कम लॉगिन बनाने के लिए 3 चरणों का पालन किया और यह ठीक काम करता है

1. ssh-keygen -t rsa
Press enter for each line
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod og-wx ~/.ssh/authorized_keys
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.