गैर-डिफ़ॉल्ट पहचान फ़ाइल स्थान के साथ पासवर्ड के बिना SSH


16

स्टार्टअप स्क्रिप्ट के एक हिस्से के रूप में मुझे कई ग्नोम-टर्मिनल विंडो को स्वचालित रूप से खोलना है, उन टर्मिनलों में से एक स्वचालित रूप से भेजते हैं:

ssh user@192.168.1.3

इसके साथ सीमा यह है कि मुझे अभी भी SSH कनेक्शन को पूरा करने के लिए एक पासवर्ड टाइप करना है।

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

जिस सिस्टम से मैं कनेक्ट करना चाहता हूं, मैं वहां से चला गया:

ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key

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

ऊपर दिए गए निर्देशों के साथ जारी रखते हुए, मैंने तब भाग लिया और निम्नलिखित प्राप्त किया:

ssh-copy-id user@IP
ERROR: No identities found

एक त्वरित खोज से पता चला कि मुझे कुंजी के स्थान को निर्दिष्ट करने की आवश्यकता है, क्योंकि यह डिफ़ॉल्ट सेव लोकेशन में नहीं था, इसलिए मैंने यह तय किया:

ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3

सर्वर का पासवर्ड पूछने के बाद, यह सफलतापूर्वक कुंजी जोड़ देता है। हालाँकि, "ssh user @ IP" से लॉग इन करने का प्रयास करने पर, मुझे पासवर्ड के लिए संकेत दिया गया।

जहाँ तक मुझे पता है, मैंने लिंक किए गए निर्देशों का सही ढंग से पालन किया है, इसलिए या तो मुझे कुछ याद आ रहा है, या शायद एक मौजूदा कॉन्फ़िगरेशन मुझे यह काम करने के लिए रोक रहा है?

दोनों सिस्टम 18.04 और ओपनशश का उपयोग करते हैं।


इसलिए मुझे SSH कमांड भेजते समय .pub फ़ाइल का स्थान निर्दिष्ट करना होगा?
hiigran

मुझे अपनी फ़ाइलों को व्यवस्थित करने का एक अलग तरीका मिला है, इसलिए गैर-डिफ़ॉल्ट स्थान, लेकिन आप लोगों ने बहुत मदद की है। धन्यवाद। बेझिझक इसे एक उत्तर दें जो मैं स्वीकार कर सकता हूं।
हीगरान

जवाबों:


35

यह उसी कारण से ssh-copy-idविफल होता है जो पहली बार विफल हुआ - यानी क्योंकि आपने पहचान फ़ाइल के लिए एक गैर-डिफ़ॉल्ट स्थान चुना है।

आप इसे उसी तरह से हल कर सकते हैं, -i /home/user/ssh/keys/server1keyअपने sshआदेश में जोड़कर - ध्यान दें कि क्लाइंट पक्ष को निजी कुंजी फ़ाइल के स्थान की आवश्यकता है ।

से man ssh

 -i identity_file
         Selects a file from which the identity (private key) for public
         key authentication is read.  The default is ~/.ssh/identity for
         protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
         ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.

वैकल्पिक रूप से, आप ~/.ssh/configकी तर्ज पर मेजबान के लिए एक फ़ाइल प्रविष्टि बनाने की इच्छा हो सकती है

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key

1
मैंने हमेशा यह माना कि कॉन्फिग फाइल में इंडेंटेशन की जरूरत है - मुझे लगता है कि ऐसा नहीं है। Intruiging।
बोरिस स्पाइडर

ओपनएसएसएच का उपयोग करने वाले किसी भी व्यक्ति को होना चाहिए ~/.ssh/config, अन्यथा ओपनएसएसएच सिस्टम वाइड डिफ़ॉल्ट का उपयोग करता है /etc/ssh/ssh_config। अगर किसी को यह मददगार लगता है, तो मैंने कुछ समय पहले अपने GitHub में एक पूर्व-निर्मित ssh_config अपलोड किया था , जो उन उपयोगकर्ताओं के लिए शुरुआती बिंदु के रूप में है जिनके पास ssh_config मैन पेज
JW09145

@ JW0914 यह केवल आधा सच है: व्यक्तिगत मान ~/.ssh/configवैश्विक के उन लोगों को ओवरराइड करेगा ssh_config, लेकिन सिर्फ फाइल होने से सिस्टम वाइड कॉन्फ़िगरेशन को अक्षम नहीं करेगा।
सेबस्टियन स्टार्क

@SebastianStark शायद आपने मेरी टिप्पणी को गलत बताया, क्योंकि मैंने कभी नहीं कहा कि यह सिस्टम वाइड कॉन्फ़िगरेशन को अक्षम कर देगा। मैंने जो कहा वह 100% तथ्यात्मक रूप से सटीक था।
JW0914

2

ssh-copy-idअसफल होने का एक और कारण यह है कि कुंजी को SSH एजेंट में नहीं जोड़ा गया है।

सबसे पहले, जाँच करें और शुरू करें कि ssh-agentक्या चल रहा है:

eval "$(ssh-agent -s)"

यदि आपको प्रक्रिया आईडी मिलती है, तो आप अपनी कुंजी जोड़ सकते हैं:

ssh-add -k /home/user/ssh/keys/server1key

-kआप चाबी का गुच्छा के साथ कुंजी जोड़ने के लिए।

जांचें कि क्या कुंजियों को इसके साथ जोड़ा गया है:

ssh-add -l

ssh-copy-id अब काम करना चाहिए।


-1

आशा है कि यह आपके लिए काम करेगा .. "sshpass -p yourpassword" यह स्वचालित रूप से दूरस्थ होस्ट में प्रवेश करेगा।

[root @ localhost .ssh] # sshpass -p password123 ssh -l रूट लोकलहोस्ट


-1

बस 2 कमांड निष्पादित करें:

ssh-keygen
ssh-copy-id

लंबा जवाब:

user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
|  ...            |
| ...             |
| ..              |
| ..+.    o .     |
|                 |
|    B            |
|                 |
|=      *         |
|=+   o .         |
+----[SHA256]-----+

और तब:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.