एक आवारा + महाराज सेटअप पर पासफ़्रेज़ से ssh कुंजी का उपयोग

वोट
14

मैं आवारा का उपयोग कर एक वीएम चल मिल गया है, और मैं बावर्ची के साथ यह प्रावधान कर रहा हूँ। चरणों में से एक एक Git रेपो क्लोनिंग शामिल है, लेकिन मेरे ssh-कुंजी (मेरी होस्ट मशीन पर) उस पर एक पदबंध है।

जब मैं चलाने vagrant up, प्रक्रिया निम्न त्रुटि के साथ Git क्लोन कदम पर विफल रहता है:
Permission denied (publickey). fatal: The remote end hung up unexpectedly
(कुंजी पासफ़्रेज़ से होस्ट मशीन पर जोड़ दिया गया है,)

मैं ऐसा करके ssh एजेंट अग्रेषण के साथ इस का समाधान करने की कोशिश की है:
जोड़ा config.ssh.forward_agent = trueकरने के लिए VagrantFile
जोड़ा गया Defaults env_keep = SSH_AUTH_SOCKके लिए /etc/sudoersवी एम पर

अब, vagrant upअभी भी विफल जब यह Git क्लोन हिस्सा करने के लिए हो जाता है, लेकिन अगर मैं चलाने vagrant provisionउसके बाद, यह गुजरता है। मेरा अनुमान है कि इस वजह से ssh विन्यास की स्थापना की है जब वी एम लाया जाता है और पुनः लोड नहीं कर रहा है

मैं उन दो सेटिंग्स समायोजित करने के बाद ssh फिर से लोड करने की कोशिश की है, लेकिन वह नहीं मदद की है।

कुछ पता है इसे कैसे हल करना है?

धन्यवाद।

26/08/2011 को 21:51
उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
3

यह जवाब है कि आप देख रहे हैं नहीं हो सकता है, लेकिन इस के लिए एक आसान ठीक एक पदबंध के बिना एक समर्पित तैनाती ssh कुंजी उत्पन्न करने के लिए किया जाएगा। मैं कई अनुप्रयोगों के लिए एक एकल कुंजी अलग और समर्पित तैनाती कुंजी के बजाय पसंद करते हैं।

11/11/2011 को 17:08
का स्रोत उपयोगकर्ता

वोट
10

आप बताया गया है, प्रारंभिक चलाने के दौरान sudoers को अद्यतन करने के शेफ के रूप में है कि रन पहले से ही उस समय तक sudo के तहत चल रहा है के लिए फायदेमंद हो करने के लिए बहुत देर हो चुकी है।

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

एक नुस्खा है कि किसी भी समय पहले ssh कनेक्शन (उबंटू के साथ परीक्षण किया, लेकिन अन्य वितरण के साथ काम करना चाहिए) से पहले मार डाला है के रूप में सहेजें:

Directory "/root/.ssh" do
  action :create
  mode 0700
end

File "/root/.ssh/config" do
  action :create
  content "Host *\nStrictHostKeyChecking no"
  mode 0600
end

ruby_block "Give root access to the forwarded ssh agent" do
  block do
    # find a parent process' ssh agent socket
    agents = {}
    ppid = Process.ppid
    Dir.glob('/tmp/ssh*/agent*').each do |fn|
      agents[fn.match(/agent\.(\d+)$/)[1]] = fn
    end
    while ppid != '1'
      if (agent = agents[ppid])
        ENV['SSH_AUTH_SOCK'] = agent
        break
      end
      File.open("/proc/#{ppid}/status", "r") do |file|
        ppid = file.read().match(/PPid:\s+(\d+)/)[1]
      end
    end
    # Uncomment to require that an ssh-agent be available
    # fail "Could not find running ssh agent - Is config.ssh.forward_agent enabled in Vagrantfile?" unless ENV['SSH_AUTH_SOCK']
  end
  action :create
end

वैकल्पिक रूप से यह पहले से ही sudoers अद्यतन के साथ एक बॉक्स बना सकते हैं और इस बात का बंद अपने भविष्य VMs आधार बनाते हैं।

18/11/2011 को 23:57
का स्रोत उपयोगकर्ता

वोट
2

आप Vagrant (यहां तक कि एक ही तरह के) के साथ कई provisioners चला सकते हैं, प्रत्येक प्रावधानकर्ता अपनी ही SSH कनेक्शन पर निष्पादित हो जाता है। मैं आम तौर पर एक शैल प्रावधानकर्ता कि कहते हैं का उपयोग करके इस समस्या को हल Added Defaults env_keep = "SSH_AUTH_SOCK"करने के लिए /etc/sudoersवी एम पर।

यहाँ बैश स्क्रिप्ट मैं तो बस यही काम करने के लिए उपयोग:

#!/usr/bin/env bash

# Ensure that SSH_AUTH_SOCK is kept
if [ -n "$SSH_AUTH_SOCK" ]; then
  echo "SSH_AUTH_SOCK is present"
else
  echo "SSH_AUTH_SOCK is not present, adding as env_keep to /etc/sudoers"
  echo "Defaults env_keep+=\"SSH_AUTH_SOCK\"" >> "/etc/sudoers"
fi

मैं बावर्ची प्रावधानकर्ता, केवल अतिरिक्त शैल provisioners साथ साथ इस परीक्षण नहीं किया ... लेकिन मैं क्या समझ से इस आपके उपयोग के मामले के लिए एक ही काम करना चाहिए।

08/08/2012 को 06:14
का स्रोत उपयोगकर्ता

वोट
0

अधिकांश आधार बक्से डिफ़ॉल्ट / असुरक्षित ssh कुंजी के साथ आते हैं, इसे सक्षम करने के लिए आसान है आवारा के लिए passwordless ssh प्रमाणन लेकिन केवल परीक्षण के लिए इस्तेमाल किया जाना चाहिए।

09/02/2013 को 03:27
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more