विंडोज़ पर ssh कुंजी के लिए पासफ़्रेज़ के लिए git को प्रॉम्प्ट नहीं बनाने का तरीका?


43

मैं git bash का उपयोग कर रहा हूं और ssh-keygen का उपयोग करके ssh कुंजी सेट कर रहा हूं और हर बार जब मैं कुछ करता हूं तो एक रेपो git के लिए मुझसे पासफ़्रेज के लिए पूछता हूं /c/Users/jankiewj/.ssh/id_rsa। क्या उस पासफ़्रेज़ को अक्षम करने का कोई तरीका है।



@ राडू ने मदद नहीं की।
ज्यूबिक

जवाबों:


56

आप इसे git bash में चला सकते हैं:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

यह दूसरी कमांड में पास वाक्यांश के लिए पूछेगा, और यह बात है। प्रत्येक अतिरिक्त कार्रवाई आपको करने की आवश्यकता होगी (जो एक बार पास वाक्यांश आवश्यक है) आपको पास वाक्यांश के लिए नहीं पूछेगा (नीचे स्क्रीन में एक उदाहरण देखें):

विंडोज़ पर गिट बैश में पास वाक्यांश जोड़ना


7
मुझे इसे फिर से दर्ज करना होगा, जैसे ही मैं गेट बैश को बंद करूंगा ... क्या कोई स्थायी समाधान है?
ब्लैक

@ बैकल इट प्रति बैश सत्र, मैंने इसे .bashrcहर बार लगाया है क्योंकि मैं गेट बैश खोलता हूं मुझे प्रॉम्प्ट मिलता है और उस सत्र के लिए मैं बिल्कुल तैयार हूं।
जकुबिक

वास्तव में आप क्या करते हैं? और कहां है .bashrc?
ब्लैक

संपादित करें: कोई बात नहीं, आपको फ़ाइल yourselv बनाने के लिए ~/.bashrcतब अपने पोस्ट से लाइनों को उसमें दर्ज करें और सहेजें, इसे thats :) xx!
ब्लैक

ऊपर लाइनों का उपयोग कर, विशेष रूप से में करने के बजाय .bashrc, मैं एक स्क्रिप्ट का उपयोग, और में या तो यह जगह होता .bash_profileया .profileयहाँ मेरे मुख्य भाग का एक स्निपेट है .bash_profile, इसे इसका समाधान किसी ऐसे व्यक्ति के लिए करना चाहिए जो अभी भी उत्तर की तलाश में है; यह नीचे दिए गए उत्तर के समान है। स्क्रिप्ट के शीर्ष पर मैं अपना लोड करता हूं .bashrc, जो लागू नहीं होता है तो बस उसे छोड़ दें। नोट: आपको id_rsaअपने निजी SSH कुंजी का नाम, और शायद पथ का संदर्भ बदलने की आवश्यकता होगी ।
Rockin4Life33

9

थोड़ा बेहतर और स्थाई समाधान है, खिड़कियों पर गिट बैश खोलते समय ssh-Agent को ऑटो लॉन्च करना। आप अपने .profile या .bashrc में नीचे कॉपी / पेस्ट कर सकते हैं। मैं इसे .profile पर रखना पसंद करता हूं

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

यह समाधान इस गितूब मदद लेख से लिया गया था


मैंने अपना सरल कोड डाल दिया है .bashrc, कैसे आपका समाधान अलग है? विंडोज बैश पर प्रत्येक शेल स्वतंत्र है, इसलिए जब आप शेल चलाते हैं तो एजेंट कभी नहीं चल रहा है।
जकूबी

कोड को कोड में डालकर समाधान ठीक काम करता है .bashrc। केवल पहली बार में ssh पासफ़्रेज़ को बढ़ावा देना। मेरा जीवन सुरक्षित किया। धन्यवाद।
बेन असमुसेन

धन्यवाद जो मेरे जीवन को बचा रहा है।
गमरू

यह वास्तव में स्वीकृत उत्तर होना चाहिए क्योंकि यह एक समाधान प्रस्तुत करता है जो लगातार और बेहतर मिलता है जो मुझे लगता है कि ओपी पूछ रहा था।
रिचर्ड डी

यदि मैंने गलती से स्टार्टअप पर गलत पासवर्ड टाइप कर दिया तो मैं क्या करूं? संपादित करें: superuser.com/a/271673/647110 के आधार पर , आप ssh-add -Dसभी कुंजियों को हटा सकते हैं ।
निल्स गुइलेरमिन

1

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

कैसे उपयोग करने के लिए इस लिंक पर एक नज़र है ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

शायद ssh-agentकिसी तरह आपकी मदद कर सकें। लेकिन अपने मौजूदा सिस्टम को जाने बिना यकीन नहीं होगा।


4
निश्चित रूप से एक अच्छा जवाब नहीं
केनेट सेलेस्टे

यह विंडोज़ 10 पर इसे हल करने का एकमात्र तरीका था। "नई एसएसएच कुंजी उत्पन्न करना और इसे एसश-एजेंट" जीथब गाइड में जोड़ने के सभी चरणों का पालन करने के बाद, यह हमेशा मुझसे पासफ़्रेज़ के लिए पूछ रहा था। इसके बाद भी इसे जोड़ा। यह व्यवहार मेरे मावन की तैनाती के प्रवाह को तोड़ रहा था क्योंकि mvn release:performचरण में यह पासफ़्रेज़ प्रदान किए बिना रिलीज़ टैग को जांचने की कोशिश करता है। इसलिए केवल पासफ़्रेज़ को मंजूरी देने से यह समस्या हल हो गई।
फर्नांडो मिगुएल कार्वाल्हो

-3

इस git कमांड को अपने रेपो लोकेशन " ssh-keygen -p " में दर्ज करें। यह आपको कीफाइल लोकेशन, पुराने पासफ़्रेज़ और नए पासफ़्रेज़ (जिसमें कोई पासबुक नहीं होने के लिए खाली छोड़ा जा सकता है) दर्ज करने के लिए संकेत देगा। नए पासवर्ड में कुछ भी दर्ज न करें और यह पासफ़्रेज़ को हटा देगा


1
एक खाली पासवर्ड छोड़ना असुरक्षित है और कई कॉर्पोरेट देवता प्रतिबंध के कारण रिक्त पासफ़्रेज़ नहीं रख पाएंगे। यह लंगड़ा कर देने वाला हल है, न कि ओपी मुद्दे का हल।
cbaldan

शायद लंगड़ा, लेकिन केवल स्थानीय उपयोग के लिए, स्वादिष्ट और समीचीन ™
जिम पी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.