मैं git push
अपना काम एक दूरस्थ Git रिपॉजिटरी में करता हूं।
हर push
मुझे इनपुट करने के लिए संकेत देगा username
और password
। मैं इसे हर धक्का से बचना चाहूंगा, लेकिन इससे बचने के लिए कॉन्फ़िगर कैसे करें?
मैं git push
अपना काम एक दूरस्थ Git रिपॉजिटरी में करता हूं।
हर push
मुझे इनपुट करने के लिए संकेत देगा username
और password
। मैं इसे हर धक्का से बचना चाहूंगा, लेकिन इससे बचने के लिए कॉन्फ़िगर कैसे करें?
जवाबों:
Ssh कीज़ बनाने के लिए टर्मिनल खोलें:
cd ~ #Your home directory
ssh-keygen -t rsa #Press enter for all values
(केवल तभी काम करता है जब प्रतिबद्ध कार्यक्रम प्रमाणपत्र / निजी और सार्वजनिक ssh कुंजी का उपयोग करने में सक्षम हो)
यहाँ एक है पूर्वाभ्यास ऊपर के चरणों के लिए पोटीन पीढ़ी पर
यह चरण भिन्न होता है, इस पर निर्भर करता है कि आपका रिमोट कैसे सेट किया गया है।
यदि यह GitHub रिपॉजिटरी है और आपके पास प्रशासनिक विशेषाधिकार हैं, तो सेटिंग्स पर जाएं और 'Add SSH key' पर क्लिक करें। ~/.ssh/id_rsa.pub
'की' लेबल वाले फ़ील्ड में अपनी सामग्री की प्रतिलिपि बनाएँ ।
अपने भंडार किसी और द्वारा किया जाता है, तो व्यवस्थापक आपके देना id_rsa.pub
।
यदि आपके दूरस्थ रिपॉजिटरी को आपके द्वारा प्रशासित किया जाता है, तो आप उदाहरण के लिए इस कमांड का उपयोग कर सकते हैं:
scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub
यदि आपने उपरोक्त चरण किए हैं और अभी भी पासवर्ड प्रांप्ट कर रहे हैं, तो सुनिश्चित करें कि आपका रेपो URL फॉर्म में है
git+ssh://git@github.com/username/reponame.git
विरोध के रूप में
https://github.com/username/reponame.git
अपना रेपो URL देखने के लिए, दौड़ें:
git remote show origin
आप URL को इसके साथ बदल सकते हैं:
git remote set-url origin git+ssh://git@github.com/username/reponame.git
[१] यह खंड एरिक पी के उत्तर को शामिल करता है
git remote set-url origin git@github.com:/username/projectname.git
क्रेडेंशियल कैशिंग सक्षम करने के लिए निम्न आदेश चलाएँ।
$ git config credential.helper store
$ git push https://github.com/repo.git
Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>
कैशिंग एक्सपायर को भी निर्दिष्ट करना चाहिए ,
git config --global credential.helper 'cache --timeout 7200'
क्रेडेंशियल कैशिंग को सक्षम करने के बाद, इसे 7200 सेकंड (2 घंटे) के लिए कैश किया जाएगा ।
नोट: क्रेडेंशियल हेल्पर स्थानीय डिस्क पर अनएन्क्रिप्टेड पासवर्ड संग्रहीत करता है।
git
मैनपेज: "इस सहायक का उपयोग करते हुए अपने पासवर्ड डिस्क पर एन्क्रिप्ट नहीं किए गए, केवल फाइल सिस्टम अनुमतियाँ द्वारा संरक्षित स्टोर करेगा।"
store
डिस्क पर अनैतिक रूप से पासवर्ड रखने वाले क्रेडेंशियल हेल्पर के बारे में एक चेतावनी याद आ रही है ।
git config --unset credential.helper
यदि आपके पास पहले से ही अपने SSH कुंजी सेट हैं और अभी भी पासवर्ड प्रॉम्प्ट प्राप्त कर रहे हैं, तो सुनिश्चित करें कि आपका रेपो URL फॉर्म में है
git+ssh://git@github.com/username/reponame.git
विरोध के रूप में
https://github.com/username/reponame.git
अपना रेपो URL देखने के लिए, दौड़ें:
git remote show origin
आप URL को इस git remote set-url
तरह से बदल सकते हैं :
git remote set-url origin git+ssh://git@github.com/username/reponame.git
git init
स्थानीय रूप से उपयोग किया था , फिर GitHub वेबसाइट पर एक नए रेपो से रिमोट को जोड़ने के बाद धक्का देने की कोशिश की।
git@github.com/username/reponame.git
बस --repo
गिट पुश कमांड के लिए विकल्प का उपयोग करें । ऐशे ही:
$ git push --repo https://name:password@bitbucket.org/name/repo.git
git remote set-url origin https://name:password@github.com/repo.git
name@github.com/....git
यदि आप हर बार पासवर्ड के लिए किसी से उलझने का मन नहीं करते हैं, तो मैं सिर्फ एक काम के लिए भी URL सेट करता हूं।
git push --repo https://github.com/Username/repo
यह बिना .git
एक्सटेंशन के काम करता है
आप के माध्यम से git-क्रेडेंशियल-स्टोर का उपयोग कर सकते हैं
git config credential.helper store
जो आपके पासवर्ड को फाइल सिस्टम में अनएन्क्रिप्टेड स्टोर करता है :
इस सहायक का उपयोग करने से आपके पासवर्ड डिस्क पर अनएन्क्रिप्टेड स्टोर हो जाएंगे, जो केवल फाइल सिस्टम अनुमतियों द्वारा संरक्षित हैं। यदि यह स्वीकार्य सुरक्षा ट्रेडऑफ़ नहीं है, तो गिट-क्रेडेंशियल-कैश का प्रयास करें, या एक सहायक ढूंढें जो आपके ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए सुरक्षित भंडारण के साथ एकीकृत हो।
Git-क्रेडेंशियल-कैश का उपयोग करें जो डिफ़ॉल्ट रूप से 15 मिनट के लिए पासवर्ड स्टोर करता है।
git config credential.helper cache
एक अलग टाइमआउट सेट करने के लिए, --timeout
यहां (5 मिनट) का उपयोग करें
git config credential.helper 'cache --timeout=300'
- यदि आप एक मैक का उपयोग कर रहे हैं, तो Git एक "osxkeychain" मोड के साथ आता है , जो आपके सिस्टम खाते से जुड़े सुरक्षित किचेन में क्रेडेंशियल्स को कैश करता है। यह विधि डिस्क पर क्रेडेंशियल्स को संग्रहीत करती है, और वे कभी भी समाप्त नहीं होती हैं, लेकिन वे उसी प्रणाली के साथ एन्क्रिप्टेड हैं जो HTTPS प्रमाणपत्र और सफारी ऑटो-फिल्स को संग्रहीत करता है। कमांड लाइन पर निम्नलिखित चल रहा है इस सुविधा को सक्षम होगा:
git config --global credential.helper osxkeychain
। आपको किचेन ऐप के साथ ही किचेन में क्रेडेंशियल्स को स्टोर करना होगा।- यदि आप विंडोज का उपयोग कर रहे हैं, तो आप "विंडोज के लिए गिट क्रेडेंशियल मैनेजर" नामक एक सहायक स्थापित कर सकते हैं । यह ऊपर वर्णित "ऑक्सकिचेचिन" सहायक के समान है, लेकिन संवेदनशील जानकारी को नियंत्रित करने के लिए विंडोज क्रेडेंशियल स्टोर का उपयोग करता है। यह https://github.com/Microsoft/Git-Credential-Manager-for-Windows पर पाया जा सकता है । [मेरा दोस्त]
credential.helper cache
काम नहीं करता है। यह होना चाहिए git config --global credential.helper wincred
।
चरण 1 -
नीचे दिए गए कमांड का उपयोग करके अपने लिनक्स सिस्टम पर SSH कुंजियाँ बनाएँ
ssh-keygen -t rsa -b 4096 -C "your_email"
यह पासफ़्रेज़ और फ़ाइल नाम (डिफ़ॉल्ट होगा ~ / .sh / id_rsa, ~ / .ssh / id_rsa.pub) के लिए पूछेगा
चरण 2 -
एक बार बनाई गई फाइलें सार्वजनिक कुंजी id_rsa.pub को github खाता ssh अनुभाग में जोड़ देती हैं।
चरण 3 -
अपनी मशीन पर कमांड के नीचे ssh-Agent के लिए निजी कुंजी id_rsa जोड़ें
ssh-add ~/.ssh/id_rsa
चरण 4 -
अब दूरस्थ url git@github.com जोड़ें: user_name / repo_name.git अपने स्थानीय git रेपो में कमांड के नीचे प्रयोग करके।
git remote remove origin
git remote add origin git@github.com:user_name/repo_name.git
बस।
अपने git क्लाइंट को अपने OS क्रेडेंशियल स्टोर पर तार दें। उदाहरण के लिए विंडोज में आप क्रेडेंशियल हेल्पर को wincred से बांधते हैं:
git config --global credential.helper wincred
GitHub पर https: // का उपयोग करते समय पासवर्ड टाइपिंग को छोड़ देने का कोई तरीका है?
इसके बजाय विंडोज ऑपरेटिंग सिस्टम इसका उपयोग करता है, यह मेरे लिए काम करता है:
https://{Username}:{Password}@github.com/{Username}/{repo}.git
जैसे
git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git
git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git
git remote add origin https://{Username}:{Password}@github.com/{Username}/{repo}.git
git push origin master
कई बार ऊपर बताए गए समाधान के बारे में कुछ बताना चाहते थे:
git config credential.helper store
आप इसके बाद पासवर्ड की आवश्यकता वाले किसी भी कमांड का उपयोग कर सकते हैं। आपको धक्का देने की जरूरत नहीं है। (आप उदाहरण के लिए भी खींच सकते हैं) उसके बाद, आपको अपने उपयोगकर्ता नाम / पासवर्ड को फिर से टाइप करने की आवश्यकता नहीं होगी।
जहाँ तक मुझे पता है, बस दो सुरक्षित तरीके हैं: ssh या passwd एन्क्रिप्टेड का उपयोग करके कीस्टॉर ।
cat ~/.ssh/id_rsa.pub
, इसे वहां पेस्ट करें, नाम दें और इसे सहेजें (यदि आपके पास ऐसी कोई फ़ाइल नहीं है, तो अपने लिए एक बनाएं ssh-keygen -t rsa
- बस सभी संकेतों के लिए दर्ज करें );git remote set-url origin git+ssh://git@github.com/username/reponame.git
- आप इसे पहले चेक कर सकते हैं git remote -v
);touch t; git add t; git commit -m "test"; git push
और पासवर्ड-मुक्त दुनिया का आनंद लेने के लिए हां की पुष्टि करें ।यदि आप केवल git config --global credential.helper store
दूसरों के बताए अनुसार उपयोग करते हैं, तो आपके अनएन्क्रिप्टेड पासवर्ड को केवल एक सादे पाठ में संग्रहीत किया जाएगा , ~/.git-credentials
जिसके तहत यह सुरक्षित नहीं है क्योंकि यह लगता है।
इसे एन्क्रिप्ट करने का प्रयास करें
sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
git config --global credential.helper store
इस मामले में, आप उपयोग कर रहे हैं
https://git@github.com/username/reponame.git
।
विंडोज पर मेरा समाधान:
ssh-keygen -t rsa
(सभी मानों के लिए प्रेस दर्ज करें)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
यदि आपका पीसी सुरक्षित है या आप पासवर्ड सुरक्षा की परवाह नहीं करते हैं, तो यह बहुत सरलता से प्राप्त किया जा सकता है। यह मानते हुए कि दूरस्थ रिपॉजिटरी GitHub पर है और origin
रिमोट रिपॉजिटरी के लिए आपका स्थानीय नाम है, इस कमांड का उपयोग करें
git remote set-url --push origin https://<username>:<password>@github.com/<repo>
--push
झंडा इस के लिए भंडार का URL परिवर्तन सुनिश्चित करता है git push
केवल आदेश। (मूल पोस्ट में पूछा गया प्रश्न git push
केवल कमांड के बारे में है । केवल पुश ऑपरेशन के लिए उपयोगकर्ता नाम + पासवर्ड की आवश्यकता है। GitHub पर सार्वजनिक रिपॉजिटरी के लिए सामान्य सेटअप है। ध्यान दें कि GitHub पर निजी रिपॉजिटरी को पुल और फ़ेच संचालन के लिए उपयोगकर्ता नाम + पासवर्ड की भी आवश्यकता होगी। , तो एक निजी भंडार के लिए आप का उपयोग नहीं करना चाहते हैं --push flag
...)
चेतावनी: यह स्वाभाविक रूप से असुरक्षित है क्योंकि:
आपका ISP, या कोई भी आपके नेटवर्क एक्सेस को लॉग इन करता है, आसानी से URL में सादे पाठ में पासवर्ड देख सकता है;
जो कोई भी आपके पीसी तक पहुंच प्राप्त करता है वह आपके पासवर्ड का उपयोग करके देख सकता है git remote show origin
।
इसीलिए SSH कुंजी का उपयोग करना स्वीकृत उत्तर है।
यहां तक कि एक SSH कुंजी पूरी तरह से सुरक्षित नहीं है । जो कोई भी आपके पीसी तक पहुंच प्राप्त करता है, वह अभी भी कर सकता है, उदाहरण के लिए, अपने रिपॉजिटरी को बर्बाद करने वाले पुश करें या - इससे भी बदतर - अपने कोड में सूक्ष्म परिवर्तन करने पर जोर देता है। (सभी पुश किए गए कमिट स्पष्ट रूप से गीथहब पर दिखाई दे रहे हैं। लेकिन अगर कोई आपके कोड को सरसरी तौर पर बदलना चाहता है, तो वे --amend
प्रतिबद्ध संदेश को बदलने के बिना एक पूर्व प्रतिबद्ध कर सकते हैं , और फिर इसे धक्का दे सकते हैं। यह चोरी और व्यवहार में नोटिस करने के लिए काफी कठिन होगा। )
लेकिन अपने पासवर्ड का खुलासा करना बदतर है । यदि कोई हमलावर आपके उपयोगकर्ता नाम + पासवर्ड का ज्ञान प्राप्त करता है, तो वे आपको अपने खाते से लॉक करने, अपना खाता हटाने, स्थायी रूप से भंडार को हटाने आदि जैसे काम कर सकते हैं।
वैकल्पिक रूप से - सादगी और सुरक्षा के लिए - आप URL में केवल अपना उपयोगकर्ता नाम दे सकते हैं , जिससे आपको हर बार अपना पासवर्ड टाइप करना git push
होगा लेकिन आपको अपना उपयोगकर्ता नाम हर बार नहीं देना होगा। (मुझे यह तरीका बहुत पसंद है, पासवर्ड टाइप करने से मुझे हर बार सोचने के लिए विराम मिलता है git push
, इसलिए मैं git push
दुर्घटना से नहीं बच सकता।)
git remote set-url --push origin https://<username>@github.com/<repo>
@
, तो यह git सर्वर के हिस्से के रूप में @ के बाद कमांड थिंकिंग पासवर्ड को तोड़ रहा है?
यह सब इसलिए उठता है क्योंकि git एक पाइप के माध्यम से क्रेडेंशियल्स भेजने के लिए क्लोन / पुल / पुश / पुश / कमांड में कोई विकल्प प्रदान नहीं करता है। हालाँकि यह क्रेडेंशियल.हेलर देता है, यह फाइल सिस्टम पर स्टोर करता है या डेमॉन आदि बनाता है। अक्सर, GIT की साख सिस्टम स्तर की होती है और उन्हें सुरक्षित रखने के लिए एप्लिकेशन को git कमांड को लागू करने पर होता है। बहुत असुरक्षित वास्तव में।
यहाँ मुझे वही काम करना है जो मुझे करना था। 1. गिट संस्करण (git --version) 1.8.3 से अधिक या उसके बराबर होना चाहिए।
GIT CLONE
क्लोनिंग के लिए, प्रारूप से URL बदलने के बाद "git क्लोन URL" का उपयोग करें: http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git} से http: // {myuser}: {my_repo_ip_address} /{myrepo_name.git}
फिर पासवर्ड के भंडार को अगले भाग की तरह शुद्ध करें।
शुद्धिकरण
अब, यह गया होगा और
यदि आपका एप्लिकेशन इन आदेशों को जारी करने के लिए जावा का उपयोग कर रहा है, तो रनटाइम के बजाय प्रोसेब्रल का उपयोग करें। यदि आप रनटाइम का उपयोग करते हैं, तो getRunTime () का उपयोग करें। निष्पादन करें जो स्ट्रिंग एरे को तर्कों के रूप में / बिन / बैश और -c के रूप में तर्क के रूप में लेती है, फिर वह जो एकल स्ट्रिंग को तर्क के रूप में लेता है।
GIT FETCH / PULL / PUSH