2011-08-02 18 views
5

मैंने नेट-एसएसएच दस्तावेज पढ़ा है, और मैं अभी भी परेशान हूं। मैं मैन्युअल रूप से प्रमाणित कर सकता हूं (ssh -i ... का उपयोग कर), और एक फ़ाइल में कुंजी रखकर और: कुंजी पैरामीटर का उपयोग करके। हालांकि, मैं: कुंजी पैरामीटर का उपयोग नहीं करना चाहता, मैं: key_data पैरामीटर का उपयोग करना चाहता हूं। क्या कोई कामकाजी उदाहरण दे सकता है? किसी कारण से, सीधे एक स्ट्रिंग को खिला रहा है: key_data काम नहीं कर रहा है, और यह त्रुटि देता है: "न तो PUB कुंजी और न ही PRIV कुंजी :: नेस्टेड asn1 त्रुटि"। बेशक मैंने इसे गुमराह किया, और यह मूल रूप से मुझे यह सुनिश्चित करने के लिए कहता है कि कुंजी पीईएम प्रारूप में है। और, ज़ाहिर है यह है। कोई विचार? यदि आवश्यक हो तो मैं अधिक विस्तृत जानकारी प्रदान कर सकता हूं ...रूबी और नेट-एसएसएच का उपयोग करके, मैं नेट :: एसएसएच.स्टार्ट के साथ key_data पैरामीटर का उपयोग करके प्रमाणीकरण कैसे करूं?

उत्तर

9

मैं इस सवाल को बहुत पुराने में देखता हूं लेकिन मैं वैसे भी आपको जवाब देने जा रहा हूं जैसे कि मेरे पास एक ही समस्या थी और मैंने इसे हल किया।

निम्नलिखित कोड में ध्यान दें कि आरएसए कुंजी युक्त स्ट्रिंग कहीं भी इंडेंट नहीं है। कुंजी की दूसरी पंक्ति में इसमें कोई अग्रणी स्थान नहीं है। जब मैंने कुंजी को चिपकाया तो टेक्स्टमैट ने इसे वहां रखा। मैंने इसे हटा दिया और यह एक आकर्षण की तरह काम करता था।

#!/usr/bin/env ruby 
require 'rubygems' 
require 'net/ssh' 

HOST = '172.20.0.31' 
USER = 'root' 

KEYS = [ "-----BEGIN RSA PRIVATE KEY----- 
MIIEogIBAAKCAQEAqccvUza8FCinI4X8HSiXwIqQN6TGvcNBJnjPqGJxlstq1IfU 
kFa3S9eJl+CBkyjfvJ5ggdLN0S2EuGWwc/bdE3LKOWX8F15tFP0= 
-----END RSA PRIVATE KEY-----" ] 

Net::SSH.start(HOST, USER, :key_data => KEYS, :keys_only => TRUE) do|ssh| 
result = ssh.exec!('ls') 
puts result 
end 
+0

'/usr/share/ruby/2.0/socket.rb:232:in हो रही:

2.9.2 के उदाहरण का उपयोग ऊपर, आप इस तरह कुछ कर रही द्वारा एक ही प्रभाव प्राप्त कर सकते हैं 'getaddrinfo': स्ट्रिंग (टाइपरर) में ऐरे का कोई अंतर्निहित रूपांतरण नहीं – sixty4bit

6

मैं एक छोटे से अधिक जानकारी है कि मैं अपने आप को पुस्तकालय के चारों ओर खुदाई के बाद पता चला जोड़ रहा ...

2.9.2 के बाद से, आपका इरादा केवल key_data में प्रदान की कुंजी का उपयोग करने के लिए है, तो आप अपनी key_data लोड करने से पहले कुंजी के रिक्त सेट को भी निर्दिष्ट करना होगा, या यह कुछ डिफ़ॉल्ट कुंजी लोड करेगा।

मेरे मामले में, लोड करने की कोशिश की गई उन पहचान फ़ाइलों में से एक पासफ्रेज़-संरक्षित था, इसलिए उसने मुझे अपने पासफ्रेज के लिए कहा, हालांकि मेरा इरादा फ़ाइल की पहचान करने के लिए बिल्कुल नहीं था।

#!/usr/bin/env ruby 
require 'rubygems' 
require 'net/ssh' 

HOST = '172.20.0.31' 
USER = 'root' 

KEYS = [ "-----BEGIN RSA PRIVATE KEY----- 
MIIEogIBAAKCAQEAqccvUza8FCinI4X8HSiXwIqQN6TGvcNBJnjPqGJxlstq1IfU 
kFa3S9eJl+CBkyjfvJ5ggdLN0S2EuGWwc/bdE3LKOWX8F15tFP0= 
-----END RSA PRIVATE KEY-----" ] 

Net::SSH.start(HOST, USER, :keys => [], :key_data => KEYS, :keys_only => TRUE) do|ssh| 
result = ssh.exec!('ls') 
puts result 
end 
संबंधित मुद्दे

 संबंधित मुद्दे