গিট পুশের জন্য ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রয়োজন


1433

আমি আমার গিটহাব অ্যাকাউন্ট থেকে আমার পিসিতে একটি গিট সংগ্রহস্থল ক্লোন করেছি।

আমি আমার পিসি এবং ল্যাপটপ দুটি নিয়েই কাজ করতে চাই, তবে একটি গিটহাব অ্যাকাউন্ট দিয়ে।

আমি যখন আমার পিসি ব্যবহার করে গিটহাব থেকে টানতে বা টানতে চেষ্টা করি তখন এর জন্য একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রয়োজন, তবে যখন আমি ল্যাপটপটি ব্যবহার করি না তখন!

আমি যখনই আমি ব্যবহার করি তখনই আমি আমার ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি টাইপ করতে চাই না  origin। আমি এখানে কি মিস করছি?


1
হ্যাঁ তবে আমার কী করা উচিত? আমি কীজেন জেনারেট করেছি আর কি?
TooCooL

1
আপনার গিথুব অ্যাকাউন্ট ( github.com/account/ssh ) দিয়ে আপনার পাবকিটি নিবন্ধিত করতে হবে এবং সঠিক ব্যবহারকারীর নামটি ব্যবহার করতে আপনার এসএসএইচ ক্লায়েন্টটি কনফিগার করতে হবে।
jwodder

1
আমি এগুলি সবই করেছি তবে এখনও এর জন্য ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রয়োজন! দুটি পিসি দিয়ে একটি অ্যাকাউন্ট ব্যবহার করা কি সম্ভব?
TooCooL

1
এই প্রশ্নটি এর জন্য আপনার সমস্ত অপশনকে বেশ ভালভাবে কভার করে: stackoverflow.com/questions/5343068/…
ফোর্ড

2
আর ssh এ পরিবর্তন করতে হবে না। এটি HTTPS দিয়েও সম্ভব with আমার উত্তর পরীক্ষা করে দেখুন।
বরুণ আচার

উত্তর:


1959

একটি সাধারণ কারণ হ'ল এসএসএইচের পরিবর্তে ডিফল্ট (এইচটিটিপিএস) ব্যবহার করে ক্লোনিং করা। আপনি আপনার সংগ্রহশালায় গিয়ে "ক্লোন বা ডাউনলোড করুন" ক্লিক করে, তারপরে ইউআরএল ক্ষেত্রের উপরে "এসএসএইচ ব্যবহার করুন" বোতামটি ক্লিক করে এবং আপনার উত্সের URL টি এর মতো আপডেট করে এটি সংশোধন করতে পারেন:

git remote set-url origin git@github.com:username/repo.git

এটি গিটহাবে নথিভুক্ত করা হয়েছে: এইচটিটিপিএস থেকে এসএসএইচে দূরবর্তী URL গুলি স্যুইচ করা


61
এবং কীভাবে ইউআরএল পরিবর্তন করবেন তা জানার জন্য এখানে যান: stackoverflow.com/a/2432799/60488 ( স্পোলারgit remote set-url origin git://new.url.here :)
জোহান কুল

136
আপনি যদি সুরক্ষা বিধিনিষেধের জন্য ব্যবহারকারীদের ssh করতে না পারেন (আমার মতো) git remote set-url origin https://name:password@github.com/repo.git আপনিও
ব্রুনো বেরিসো

134
এইচটিটিপিএস দিয়ে ক্লোন করা কেন একটি সাধারণ ভুল? গিটহাব এখন এইচটিটিপিএস ব্যবহার করার পরামর্শ দিচ্ছে।
ডেনিস

8
@ স্মার্ট্রে ডিফল্টরূপে এটি ক্ষেত্রে তবে আপনি নিজের শংসাপত্রগুলি ক্যাশে করতে কোনও সহায়ক ব্যবহার করতে পারেন ।
ডেনিস

28
Permission denied (publickey)এই গাইডটি ব্যবহার করে আমার স্থির করে: help.github.com/articles/generating-ssh-keys
ভোল্ট্রেভো

386

গিট সংগ্রহস্থলগুলির সাথে স্থায়ীভাবে প্রমাণীকরণ

শংসাপত্রের ক্যাশে সক্ষম করতে নিম্নলিখিত কমান্ডটি চালান :

$ git config credential.helper store
$ git push https://github.com/owner/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 remote set-url origin https://git@github.com/<owner>/<repo>.git এটির সাথে পরিবর্তন করতে হতে পারে এটি 2 এফএ
ব্রোন ডেভিস

14
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটা ঠিক প্রশ্নের উত্তর।
আব্রাহাম টিএস

সুরক্ষার জন্য এটি ওবুন্টু ফাইলগুলি থেকে 72২০০ পরে স্বয়ংক্রিয়ভাবে মুছে ফেলা হবে?
usama

বা 12 ঘন্টা জন্য 43,200। আপনি প্রতিদিন একবার লগইন করুন। কারও কারও পক্ষে এটি আরও যুক্তিসঙ্গত হতে পারে।
উড়স্কুইরেল

সবেমাত্র এটি চেষ্টা করেছেন - পেয়েছেন:fatal: protocol 'https' is not supported
জোয়েল

134

আমি ঠিক একই সমস্যার মুখোমুখি এসেছি এবং সবচেয়ে সহজ সমাধানটি হ'ল এইচটিপিপিএসের পরিবর্তে এসএসএইচ ইউআরএল ব্যবহার করা:

ssh://git@github.com/username/repo.git

এবং এটি নয়:

https://github.com/username/repo.git

আপনি এখন এবং এর পরিবর্তে কেবল এসএসএইচ কী দিয়ে বৈধতা দিতে পারেন ।usernamepassword


1
সমস্যা সমাধানের সবচেয়ে সহজ উপায়, কেবল দূরবর্তী উত্সের URL সম্পাদনা করুন। এখানেই শেষ. সম্পন্ন. ধন্যবাদ!
JOM

1
এটি আমার জন্য কাজ করেন কিন্তু প্রথম আমি এই ঠিকানায় প্রয়োজন: stackoverflow.com/questions/2643502/...
শ্রীধর Sarnobat

এসএসএইচ কী সেট আপ করতে আপনি হেল্প.github.com/articles/connecting-to-github-with-ssh
ksridhar

120

এসএসএইচে পরিবর্তিত হওয়া ছাড়াও আপনি এইচটিটিপিএস ব্যবহার করা চালিয়ে যেতে পারেন, যদি আপনার পাসওয়ার্ডটি পরিষ্কার লেখায় রাখতে আপত্তি না থাকে। ~/.netrcএটি আপনার মধ্যে রাখুন এবং এটি আপনার ব্যবহারকারীর নাম / পাসওয়ার্ডের জন্য জিজ্ঞাসা করবে না (কমপক্ষে লিনাক্স এবং ম্যাকে):

machine github.com
       login <user>
       password <password>

সংযোজন (ভনকের দ্বিতীয় মন্তব্য দেখুন): উইন্ডোজটিতে ফাইলটির নাম %HOME%\_netrc

আপনি এনক্রিপ্ট করতে চাইলে ভনসের প্রথম মন্তব্যটি পড়ুন।

আর একটি সংযোজন (ব্যবহারকারীর 137717 এর মন্তব্য দেখুন) যা আপনি যদি গিট 1.7.10 বা আরও নতুন করে ব্যবহার করতে পারেন ।

একটি শংসাপত্র সহায়ক ব্যবহার করে গিটে আপনার গিটহাব পাসওয়ার্ডটি ক্যাশে করুন :

আপনি যদি এইচটিটিপিএস ব্যবহার করে গিটহাবের সংগ্রহস্থলগুলি ক্লোনিং করছেন তবে আপনি গিটহাবের ব্যবহারকারীর নাম এবং পাসওয়ার্ডটি প্রতিবার গিটহাবের সাথে কথা বলার জন্য গিটকে বলার জন্য একটি শংসাপত্র সহায়ক ব্যবহার করতে পারেন।

এটি লিনাক্স, ম্যাক এবং উইন্ডোতেও কাজ করে।


3
হ্যাঁ, এটি লিনাক্সে কাজ করে তবে উইন্ডোজে গিটব্যাশের জন্য কাজ করে না।
ডিলসন বিক্রয়

3
@dolmen আমি তোমাদের বলতে চাচ্ছি তা দেখতে, কিন্তু আপনি যদি একটি স্পষ্ট পাঠ্য, আপনি যা করতে পারেন ... এটা এনক্রিপ্ট আপনার পাসওয়ার্ড নির্বাণ মনে;) দেখুন stackoverflow.com/a/18362082/6309 । : এবং যে 2-ফ্যাক্টর প্রমাণীকরণ গিটহাব এর (2FA) সঙ্গে এমনকি সামঞ্জস্যপূর্ণ stackoverflow.com/a/18607931/6309
VonC

3
@ বিক্রয় এটি কোনও ডস সেশন বা উইন্ডোজের গিট ব্যাশ থেকে পুরোপুরি কাজ করে, যদি আপনি আপনার ফাইলটিকে %HOME%\_netrc(পরিবর্তে ~/.netrc) কল করেন তবে । সেই ফাইলটি এনক্রিপ্ট করতে stackoverflow.com/a/18362082/6309 দেখুন ।
ভনসি

1
এটি লিনাক্সে খুব ভাল কাজ করে, বিশেষত ভিপিএন-এর উপর গিট ব্যবহার করে।
ইভান হু

3
আপনার এটিকে পরিষ্কার টেক্সটে রাখা বা এটি এনক্রিপ্ট করার দরকার নেই। সহায়ক ইউটিলিটি এটি আপনার জন্য ক্যাশে করবে এবং সেট আপ করতে 30 সেকেন্ড সময় নেয়। help.github.com/articles/caching-your-github-password-in-git/…
ব্যবহারকারী 137717

86

পূর্ববর্তী উত্তরগুলি দ্বারা বিভ্রান্ত যারা অনাহুতদের জন্য, আপনি এটি করতে পারেন:

git remote -v

যা এরকম কিছু দিয়ে সাড়া দেবে

origin    https://yourname@github.com/yourname/yourrepo.git (fetch)
origin    https://yourname@github.com/yourname/yourrepo.git (push)

তারপরে আপনি কমান্ডটি চালিয়ে যেতে পারেন যাঁর পরামর্শ দিয়েছেন অনেকেই, তবে এখন আপনি নিজের নাম এবং আপনাররেপো উপরের দিক থেকে জানেন, তাই আপনি কেবল উপরের দিক থেকে কেটে পেস্ট করতে পারবেন yourname/yourrepo.git:

git remote set-url origin git@github.com:yourname/yourrepo.git

1
আমি এই চেষ্টা করেছিলাম। এটি আমাকে paraphraseপ্রতিবারের জন্য জিজ্ঞাসা করে । আমি একটি সেট আপ করি নি
সামায়ো

কি জায়গায় যায় yourrepo?
রাফি

2
@ রাফি রান করুন git remote -vএবং দেখুন কী বেরিয়ে আসে
ডেভিড

1
অন্যান্য উত্তরগুলির এই পরামর্শটি প্রতিরোধ করা উচিত।
বেনেট ব্রাউন

57

আপনি SSH ব্যবহার করে করছি এবং আপনার ব্যক্তিগত কী একটি পাসফ্রেজ দিয়ে এনক্রিপ্ট করা থাকে, তাহলে আপনি এখনও ব্যক্তিগত কীয়ের জন্য পাসফ্রেজ / পাসওয়ার্ড উল্লেখ করার অনুরোধ জানানো থাকবেন কারণ যখনই আপনি গীত সঙ্গে নেটওয়ার্ক অপারেশন না মত push, pullএবং fetch

ব্যক্তিগত কী পাসফ্রেজ / পাসওয়ার্ড শংসাপত্রগুলি সংরক্ষণ করতে ssh-এজেন্ট ব্যবহার করুন

আপনি যদি নিজের পাসফ্রেজটি প্রতিবার প্রবেশ করা এড়াতে চান, আপনি ssh-agentএকবার টার্মিনাল সেশন অনুযায়ী আপনার ব্যক্তিগত কী পাসফ্রেজ শংসাপত্রগুলি সংরক্ষণ করতে ব্যবহার করতে পারেন , আমি আমার উত্তরে বলেছি যে আপনার প্রমাণীকরণ এজেন্টের সাথে কোনও সংযোগ খুলতে পারিনি :

$ eval `ssh-agent -s`
$ ssh-add

উইন্ডোজ এমএসজিগিত বাশ-এ আপনাকে আউটপুট মূল্যায়ন ssh-agentকরতে হবে তবে অন্যান্য বিকাশ পরিবেশ এবং অপারেটিং সিস্টেমে আপনার একই কাজ করার দরকার আছে কিনা তা আমি নিশ্চিত নই।

ssh-addআপনার হোম .sshফোল্ডারের নামক একটি প্রাইভেট কী অনুসন্ধান করে id_rsaযা ডিফল্ট নাম, তবে আপনি কোনও আলাদা নাম দিয়ে কোনও ফাইলপ্যাট একটি কীতে পাস করতে পারেন।

এজেন্ট হত্যা

আপনি যখন আপনার টার্মিনাল সেশনটি সম্পন্ন করবেন, আপনি ssh-agentকিল পতাকা দিয়ে শাটডাউন করতে পারেন -k:

$ ssh-agent -k

ssh-agentম্যানুয়ালটিতে যেমন ব্যাখ্যা করা হয়েছে :

-k

বর্তমান এজেন্টকে হত্যা করুন (এসএসএইচ_এজিআইপিআইপিআইডি এনভায়রনমেন্ট ভেরিয়েবল দ্বারা প্রদত্ত)।

.চ্ছিক সময়সীমা

এছাড়াও, এটি এর মতো একটি alচ্ছিক সময়সীমা প্যারামিটার নিতে পারে:

$ ssh-add -t <timeout>

যেখানে <timeout>বিন্যাসের হয় <n>hজন্য <n>ঘন্টা, <n>mজন্য <n>মিনিট, ইত্যাদি।

ssh-agentম্যানুয়াল অনুসারে :

-t life

এজেন্টে যুক্ত সর্বাধিক আজীবনের জন্য একটি ডিফল্ট মান সেট করুন। আজীবন সেকেন্ডে বা একটি সময় বিন্যাসে sshd_config (5) এ নির্দিষ্ট করা যেতে পারে । Ssh-add (1) সহ একটি পরিচয়ের জন্য নির্দিষ্ট জীবনকাল এই মানটিকে ওভাররাইড করে। এই বিকল্পটি ছাড়াই ডিফল্ট সর্বাধিক জীবনকাল চিরকাল।

আরও সময় ফর্ম্যাট জন্য এই পৃষ্ঠাটি দেখুন

সাইগউইন ব্যবহারকারীদের জন্য সুরক্ষা সতর্কতা

সাইগউইন ব্যবহারকারীদের সাইগউইন -এ এসএস-এজেন্ট ব্যবহার করে একটি সম্ভাব্য সুরক্ষা ঝুঁকি সম্পর্কে সচেতন হওয়া উচিত :

লোকেরা সাইগউইন 1 এর অধীনে এসএসএল-এজেন্টের সম্ভাব্য বিপদগুলি সম্পর্কে সচেতন হওয়া উচিত , যদিও স্থানীয় নেটস্ট্যাট এবং রিমোট পোর্টস্ক্যানের অধীনে এটি প্রদর্শিত হয় না যে / tmp / ssh-foo এ উল্লিখিত বন্দরটি কারও অ্যাক্সেসযোগ্য ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

এবং উদ্ধৃত লিঙ্কে :

তবে খেয়াল করুন যে সাইগউইনের ইউনিক্স ডোমেন সকেটগুলি স্বল্প পরিমাণে ইনসিকিউর এবং তাই আমি সাইগউইনের অধীনে এসএসএল-এজেন্টের ব্যবহারকে দৃ strongly ়ভাবে অস্বীকার করি।

আপনি যখন সাইগউইনের অধীনে ssh-এজেন্ট পরিচালনা করেন এটি /tmp/ssh-$USERNAME/ডিরেক্টরিতে AF_UNIX সকেট তৈরি করে । সাইগউইন এএফ_ইউএনআইএক্স এর অধীনে সকেটগুলি এএফপিইটি সকেটের মাধ্যমে অনুকরণ করা হয়। আপনি /tmp/ssh-$USERNAME/agent-socket-*নোটপ্যাডের মাধ্যমে যদি ফাইলটি সন্ধান করেন তবে আপনি তা সহজেই দেখতে পাবেন । আপনি কিছু দেখতে পাবেন

!<socket >2080

তাহলে দৌড়ে netstat -aগিয়ে অবাক! আপনার কাছে 2080 বন্দর শোনার কিছু প্রোগ্রাম রয়েছে It's এটি ssh- এজেন্ট। সার্ভারের কাছ থেকে যখন এসএসএস কোনও আরএসএ চ্যালেঞ্জ গ্রহণ করে, তখন এটি সংশ্লিষ্টটিকে বোঝায় /tmp/ssh-$USERNAME/agent-socket-*(সাইগউইনের অধীনে, আমাদের ক্ষেত্রে এটির সংযোগটি উন্মুক্ত হবে localhost:2080) এবং এসএসএস-এজেন্টকে তার ব্যক্তিগত কী দিয়ে আরএসএ চ্যালেঞ্জটি প্রক্রিয়া করতে বলে এবং তারপরে এটি কেবলমাত্র ssh-এজেন্ট থেকে প্রাপ্ত প্রতিক্রিয়াটিকে সার্ভারে পাস করে।

ইউনিক্সের অধীনে, এই জাতীয় পরিস্থিতি সমস্যা ছাড়াই কাজ করে, কারণ যখন প্রোগ্রামটি একটি AF_UNIX সকেটে অ্যাক্সেস করার চেষ্টা করে তখন ইউনিক্স কার্নেল অনুমতি পরীক্ষা করে। এএফপিইটি সকেটের ক্ষেত্রে তবে সংযোগগুলি বেনামে রয়েছে ("নিরাপদ" পড়ুন)। কল্পনা করুন, আপনার সাইগউইন এসএস-এজেন্ট চলছে। কোনও দূষিত হ্যাকার আপনার বক্সটি পোর্ট করতে পারে, এসএসএইচ-এজেন্ট দ্বারা ব্যবহৃত ওপেন পোর্টটি সনাক্ত করতে পারে, আপনার এসএসএইচ সার্ভারের সাথে একটি সংযোগ খুলতে পারে, সেখান থেকে আরএসএ চ্যালেঞ্জ গ্রহণ করতে পারে, সে খোলা পোর্টের মাধ্যমে আপনার এসএস-এজেন্টকে এটি প্রেরণ করতে পারে, সেগুলি গ্রহণ করতে পারে আরএসএ প্রতিক্রিয়া, এটি এসএসএইচ সার্ভারে এবং ভয়েলাতে প্রেরণ করুন, তিনি সফলভাবে আপনার সার্ভারে আপনার হিসাবে লগ ইন করেছেন।


সুন্দর এবং বিস্তারিত মনে হচ্ছে। আমি https শংসাপত্রের সহায়তার যত্ন নিয়েছি এবং আপনি ssh সংযোগের যত্ন নিয়েছেন! +1
ভোনসি

49

সূত্র: গিট সেট করুন

নিম্নলিখিত কমান্ডটি কিছু সময়ের জন্য আপনার পাসওয়ার্ডকে মেমোরিতে সংরক্ষণ করবে ( গিট 1.7.10 বা আরও নতুনের জন্য )।

$ git config --global credential.helper cache
# Set git to use the credential memory cache

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after one hour (setting is in seconds)

2
আমি 'netrc' ক্রেডেনশিয়াল সহায়তা (পছন্দ করা stackoverflow.com/a/18362082/6309 ক্যাশে জন্য) একাধিক পরিচয়পত্র (প্রতি পাসওয়ার্ড মনে করেও)। কিন্তু আপনি যদি উইন্ডোজ হয় এবং মেমরি ক্যাশে ব্যবহার করতে চান, আপনি winstore (প্রয়োজন stackoverflow.com/a/15310274/6309 )
VonC

9
এটি এখন পর্যন্ত আইএমএইচওর সেরা উত্তর।
চিয়েল দশ ব্রিনকে

35

আপনি যখন গিট টান এবং ধাক্কার জন্য https ব্যবহার করেন, remote.origin.urlপ্রতিবার আপনি যখন চাপ দেবেন তখন ইনপুট ব্যবহারকারীর নাম (বা / এবং পাসওয়ার্ড) এড়াতে কেবল আপনার প্রকল্পের জন্য কনফিগার করুন।

কীভাবে কনফিগার করবেন remote.origin.url:

ইউআরএল ফর্ম্যাট:
    HTTPS: // {ব্যবহারকারীর নাম: পাসওয়ার্ড @} github.com/ {মালিক} / {রেপো}

ইউআরএল পরামিতি:

* ব্যবহারকারীর নাম 
ptionচ্ছিক, ব্যবহারকারীর নাম যখন প্রয়োজন হয়
প্রমাণীকরণ, নির্দিষ্ট করা থাকলে, প্রমাণীকরণের প্রয়োজন হলে আবার ব্যবহারকারীর নাম লিখতে হবে না। ইমেল ব্যবহার করবেন না; আপনার ব্যবহারকারী নাম ব্যবহার করুন যার কোনও "@" নেই, অন্যথায় URL টি সঠিকভাবে বিশ্লেষণ করা যায় না, * পাসওয়ার্ড alচ্ছিক, যখন প্রমাণীকরণ প্রয়োজন পাসওয়ার্ড। নির্দিষ্ট করা থাকলে, প্রমাণীকরণের প্রয়োজন হলে আবার পাসওয়ার্ড প্রবেশ করার প্রয়োজন নেই। টিপ: এই মানটি সরল পাঠ্য হিসাবে সঞ্চিত রয়েছে, তাই সুরক্ষা উদ্বেগের জন্য, এই পরামিতিটি নির্দিষ্ট করবেন না, * যেমন গিট কনফিগারেশন remote.origin.url https: //eric@github.com/eric/myproject

@ আপডেট - ব্যবহার ssh

আমি মনে করি sshপ্রোটোকল ব্যবহার করা এর চেয়ে আরও ভাল সমাধান https, যদিও সেটআপ ধাপটি আরও জটিল।

রুক্ষ পদক্ষেপ:

  • ssh-keygenউইন্ডোতে msysgitঅনুরূপ কমান্ড সরবরাহ করে লিনাক্স-এ কমান্ড ব্যবহার করে ssh কী তৈরি করুন ।
  • স্থানীয় মেশিনে প্রাইভেট কীটি যথাযথ স্থানে রাখুন, যেমন ~/.ssh। এবং এটি ssh-addকমান্ডের মাধ্যমে ssh এজেন্টে যুক্ত করুন ।
  • গিট সার্ভারে সর্বজনীন কী আপলোড করুন।
  • remote.origin.urlগিট সংগ্রহস্থলকে sshস্টাইলে পরিবর্তন করা , যেমন,git@gitlab.com:myaccount/myrepo.git
  • তারপরে যখন টানুন বা চাপ দিন তখন কখনও ব্যবহারকারীর নাম বা পাসওয়ার্ড প্রবেশ করার দরকার নেই।

পরামর্শ:

  • যদি আপনার এসএস কীতে একটি পাসফ্রেজ থাকে, তবে আপনাকে ডিফল্টরূপে আপনার মেশিনটির প্রতিটি পুনরায় চালু করার পরে কীটির প্রথম ব্যবহারের ক্ষেত্রে আপনাকে এটি ইনপুট করতে হবে।

@Update - মধ্যে স্যুইচ করুন httpsএবং sshপ্রোটোকল।

কেবল পরিবর্তন remote.origin.urlকরা যথেষ্ট হবে, বা আপনি repo_home/.git/configমান পরিবর্তন করতে সরাসরি সম্পাদনা করতে পারবেন (যেমন viলিনাক্স ব্যবহার করে)।

সাধারণত আমি প্রতিটি প্রোটোকলের জন্য একটি লাইন যুক্ত করি এবং তাদের ব্যবহার করে একটিতে মন্তব্য করে #

যেমন

[দূরবর্তী "উত্স"]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        আনুন = + রেফ / হেড / *: রেফার্স / রিমোটস / উত্স / *

আপনি কি নিশ্চিত যে http [গুলি] ভিত্তিক ইউআরএল ইউজারনেম প্রসার সমর্থন করে? ম্যানুয়ালটিতে git-fetch(1)উল্লেখ করা হয়েছে যে কেবল git/ sshভিত্তিক ইউআরএলগুলির জন্য।
দিন

@ প্ল্যামডে হ্যাঁ, আমি এটি ব্যবহার করছি, আমার গিট সংস্করণটি 1.8.2.3 এবং 1.8.4, আমি নিশ্চিত নই যে এই সম্পর্কে উচ্চতর ভেরিয়ানের পরিবর্তন হয় কিনা।
এরিক ওয়াং

1
ইউআরএলে আপনার পাসওয়ার্ড সরবরাহকারী এনবি (এইচটিটিপিএস ব্যবহার করার সময়ও) এর অর্থ এটি আপনার এবং আপনার সংগ্রহস্থলের মধ্যে থাকা সমস্ত কিছুর জন্য দৃশ্যমান।
উইলিয়াম

3
না, পাসওয়ার্ড সরবরাহ https://username:password@github.com/করা নিরাপদ। দেখুন stackoverflow.com/questions/4980912/...
slowhand

1
এবং এটি আমি যা খুঁজছিলাম (সম্পূর্ণ অটোমেশনের জন্য)
জোশুয়া

16

আপনি আপনার গিটহাব পাসওয়ার্ডকে গিতে ক্যাশে করতে পারেন:

গিটহাবের অফিসিয়াল ডকুমেন্টেশন থেকে কেবল নির্দেশাবলী অনুসরণ করুন ।

উপরের লিঙ্কটি থেকে নির্দেশাবলী অনুসরণ করার পরে, প্রতিবার ব্যবহারকারীর নাম / পাসওয়ার্ড টাইপ না করে আপনার সংগ্রহস্থল থেকে / চাপতে / টানতে সক্ষম হবেন।


5
এটি এখানে সেরা উত্তর এবং গ্রহণযোগ্য একটি আইএমও হওয়া উচিত
TheZuck

1
সম্মত হয়েছে, সরকারী ডকুমেন্টেশনের উল্লেখ করে একটি উত্তরকে অগ্রাধিকার দেওয়া উচিত। আমি আনন্দের সাথে তাদের নির্দেশাবলী অনুসরণ করেছি এবং মানক সম্মেলনগুলি ব্যবহার করতে পছন্দ করি।
জননিব

10

এখানে আরও একটি বিকল্প রয়েছে:

লেখার বদলে

git push origin HEAD

আপনি লিখতে পারেন:

git push https://user:pass@yourrepo.com/path HEAD

স্পষ্টতই, বেশিরভাগ শাঁসের সাহায্যে এটি পাসওয়ার্ডকে ইতিহাসে ক্যাশে করে দেবে, তাই এটি মনে রাখবেন।


1
বাশে, এক বা একাধিক নেতৃস্থানীয় স্পেস যুক্ত করা সাধারণত এটিকে ইতিহাসের বাইরে রাখে। তবে গিট বাশে নেই , যদিও।
পিটার মর্টেনসেন

এটি কেবল আমার জন্য কাজ করেছিল :)
নবীন কুমার ভি

9

আমার জন্য যা কাজ করেছে তা হ'ল সম্পাদনা .git/configএবং ব্যবহার

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

এটি আপনার পাসওয়ার্ড সংরক্ষণের একটি অনিরাপদ উপায় বলে ছাড়াই যায় না তবে এমন পরিবেশ / কেস রয়েছে যেখানে এটি কোনও সমস্যা নাও হতে পারে।


6

যদি এসএসএইচ কী বা .netrcফাইলটি আপনার পক্ষে কাজ করে না, তবে অন্য একটি সহজ, তবে কম সুরক্ষিত সমাধান, যা আপনার পক্ষে কাজ করতে পারে তা হ'ল গিট-শংসাপত্রের দোকান - ডিস্কে শংসাপত্রগুলি সংরক্ষণ করার সহায়ক:

git config --global credential.helper store

ডিফল্টরূপে, শংসাপত্রগুলি ফাইলে সংরক্ষণ করা হবে ~/.git-credentials। এটি তৈরি এবং লিখিত হবে।

দয়া করে নোট করুন যে এই সহায়কটি ব্যবহার করে আপনার পাসওয়ার্ডগুলি ডিস্কে এনক্রিপ্ট না করে কেবল ফাইল সিস্টেমের অনুমতি দ্বারা সুরক্ষিত থাকবে। এটি যদি গ্রহণযোগ্য সুরক্ষা বাণিজ্য নাও হতে পারে।


5

আমারও একই প্রশ্ন ছিল.

সুতরাং আমি .git/configআমার প্রকল্প থেকে ফাইলটি পরিবর্তন করেছি,

url = https://github.com/<your-user-here>/<your-repo-here>

প্রতি

url = git@github.com:<your-user-here>/<your-repo-here>

এবং সেট করা থাকা গিট প্রোফাইলে এসএসএইচ পাবলিক কী যুক্ত করেছেন।

এসএসএইচ পাবলিক কী এর জন্য:

cat ~/.ssh/id_rsa.pub

1
সঙ্গে cat ~/.ssh/id_rsa.pubRSA কী পেতে এবং Git ওয়েব পোর্টাল সেটিং পেস্ট করুন।
অনুপম মৌর্য

4

এইচটিটিপিএসের জন্য আপডেট:

গিটহাব উইন্ডোজের জন্য একটি নতুন প্রোগ্রাম চালু করেছে যা আপনি এইচটিটিপিএস ব্যবহার করার সময় আপনার শংসাপত্রগুলি সংরক্ষণ করে:

ব্যবহার করা:

  • প্রোগ্রামটি ডাউনলোড করুন এখান থেকে

  • আপনি প্রোগ্রামটি চালানোর পরে এটি আপনার .gitconfigফাইলটি সম্পাদনা করবে । আপনার বেশ কয়েকটিগুলির .gitconfigক্ষেত্রে এটি সঠিক সম্পাদিত কিনা তা যাচাই করুন। যদি এটি সঠিকটি সম্পাদনা না করে তবে নিম্নলিখিতটি আপনারটিতে যুক্ত করুন.gitconfig

    [credential]
        helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
    

    লাইন বিরতি পরে নোট করুন [credential]। এটা দরকার.

  • আপনার কমান্ড লাইন ক্লায়েন্ট খুলুন এবং git push origin masterএকবার চেষ্টা করুন । যদি এটি আপনাকে কোনও পাসওয়ার্ডের জন্য জিজ্ঞাসা করে তবে এটিকে প্রবেশ করুন এবং আপনি এর মধ্য দিয়ে যাচ্ছেন। পাসওয়ার্ড সংরক্ষিত!


ধন্যবাদ বরুণ, কাজ কমন!
জয়

4

উইন্ডোজ গিট ব্যবহারকারীদের জন্য, দৌড়ানোর পরে git config --global credential.helper store, যদি এটি এখনও কোনও পাসওয়ার্ডের জন্য অনুরোধ করে তবে আপনি এই কমান্ডটি ব্যবহার করে কনফিগারেশন ফাইলটি কোথায় লিখিত আছে তা ভালভাবে পরীক্ষা করতে পারেন

git config --list --show-origin

আমার ক্ষেত্রে, ম্যানুয়ালি কনফিগারেশন ফাইল 'সি: \ প্রোগ্রাম ফাইলগুলি it গিট \ মিংডু 64৪ \ ইত্যাদি \ gitconfig' সম্পাদনা করার পরে এবং নিম্নলিখিত পাঠ্য যুক্ত করার পরে, এটি কার্যকর হয়েছিল।

[credential]
    helper = store

3

আপনার কাছে মূলত দুটি বিকল্প রয়েছে।

আপনি যদি উভয় মেশিনে একই ব্যবহারকারীর ব্যবহার করেন তবে আপনার পিসিতে .pub কীটি অনুলিপি করতে হবে, তাই গিটহাব জানে যে আপনি একই ব্যবহারকারী।

আপনি যদি আপনার পিসির জন্য একটি নতুন .pub ফাইল তৈরি করে থাকেন এবং মেশিনগুলিকে বিভিন্ন ব্যবহারকারীর মতো আচরণ করতে চান তবে আপনাকে নতুন .pub ফাইলটি গিটহাব ওয়েবসাইটে রেজিস্ট্রেশন করতে হবে।

এটি যদি এখনও কাজ না করে তবে এটি হতে পারে কারণ ssh সঠিকভাবে কনফিগার করা হয়নি এবং এটি ssh আপনার কীগুলির অবস্থান খুঁজে পেতে ব্যর্থ। চেষ্টা

ssh -vv username@github.com

এসএসএইচ কেন ব্যর্থ হয় সে সম্পর্কে আরও তথ্যের জন্য।


3

আপনার গিট কনফিগারেশন ফাইলটি সরাসরি আপডেট করা হচ্ছে ( যদি আপনি অভিনব আদেশগুলি মুখস্ত করতে চান না ):

.git/configআপনার প্রিয় পাঠ্য সম্পাদকটিতে আপনার ফাইলটি খুলুন । এটি আপনি যে ফোল্ডারটি ক্লোন করেছেন বা আপনার যে ভান্ডারটি সম্পন্ন git initহয়েছে সেগুলিতে থাকবে that os সংগ্রহশালায় যান। .gitএকটি গোপন ফোল্ডার, এবং Ctrl+ টিপে Hলুকানো ফোল্ডারটি প্রদর্শন করা উচিত ( ls -aটার্মিনালে)।

নীচে .git/configফাইলটির একটি নমুনা দেওয়া হল । এই লাইনগুলি অনুলিপি করুন এবং আটকান এবং আপনার গিট তথ্য সহ সেই লাইনগুলি আপডেট করার বিষয়ে নিশ্চিত হন।

[user]
        name = Tux
        email = tux@gmail.com
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

ইউএসএল অংশটি এসএসএইচের জন্য নিম্নলিখিত ফর্ম্যাট সহ পরিবর্তন করুন:

url = git@github.com:happy_feet/my_code.git

( গিটহাব বা বিটবকেটের মতো বিভিন্ন গিট রিমোট সার্ভারের সাথে উপরের ফর্ম্যাটগুলি পরিবর্তন হয় না version আপনি যদি সংস্করণ নিয়ন্ত্রণের জন্য গিট ব্যবহার করছেন ):

দ্রষ্টব্য: রিমোট গিট সংগ্রহস্থলের সাথে সংযুক্ত হওয়ার এসএসএইচ উপায়ের জন্য আপনার গিট রিমোট সার্ভারে আপনার সর্বজনীন এসএসএইচ কী যুক্ত করতে হবে ( যেমন গিটহাব বা বিটবকেট। এসএসএইচ কীগুলির জন্য সেটিংস পৃষ্ঠাটি সন্ধান করুন )।

আপনার এসএসএইচ কী কীভাবে জেনারেট করা যায় তা জানতে, দেখুন: এসএসএইচ কী তৈরি করা


2

এটিই আমার পক্ষে কাজ করেছে:

git remote set-url origin https://username@github.com/username/reponame.git

উদাহরণ:

git remote set-url origin https://jsmith@github.com/jsmith/master.git

ধন্যবাদ আমি আপনার উত্তর upvote
মানদীপ সিং

2

আপনার দুটি পদক্ষেপ সম্পাদন করা দরকার -

  1. git remote remove origin
  2. git remote add origin git@github.com:NuggetAI/nugget.git

লক্ষ্য করুন গিট URL টি একটি এসএসএইচ URL এবং কোনও HTTPS URL নয় ... যা আপনি এখান থেকে নির্বাচন করতে পারেন:

এখানে চিত্র বিবরণ লিখুন


2

আপনি যদি এসএসএইচের পরিবর্তে এইচটিটিপিএস ক্লোন করে থাকেন এবং টান, ধাক্কা এবং আনাতে ব্যবহারকারী নাম এবং পাসওয়ার্ড প্রম্পট নিয়ে সমস্যার মুখোমুখি হন। আপনি কেবল ইউবুন্টু-র জন্য এই সমস্যাটি সমাধান করতে পারেন

পদক্ষেপ 1: রুট ডিরেক্টরিতে সরান

cd ~/

একটি ফাইল .git- শংসাপত্র তৈরি করুন

আপনার সাথে usename passwordএবং এই ফাইলটিতে এই সামগ্রীটি যুক্ত করুনgithosting URL

https://user:pass@example.com

তারপরে কমান্ডটি কার্যকর করুন

git config --global credential.helper store

এখন আপনি কোনও ধরণের ঝামেলা ছাড়াই আপনার রেপো থেকে পুশ টানতে এবং সমস্ত বিবরণ আনতে সক্ষম হবেন।


0

আপনি যদি উইন্ডোজের অধীনে গিট (উদাহরণস্বরূপ, গিট ব্যাশ) ব্যবহার করছেন (এবং যদি আপনি এইচটিটিপিএস থেকে এসএসএইচ পরিবর্তন করতে চান না), আপনি উইন্ডোজের জন্য গিট ক্রেডেনসিয়াল ম্যানেজারও ব্যবহার করতে পারেন

এই অ্যাপ্লিকেশনটি আপনার জন্য ব্যবহারকারীর নাম এবং পাসওয়ার্ড রাখবে ...


0

যেহেতু অনেক ব্যবহারকারী বলেছেন, আপনাকে কেবলমাত্র আপনার গিট সংগ্রহস্থলটি এইচটিটিপিএস থেকে এসএসএইচ করতে হবে।

আপনি যদি নিজের মেশিনে কোনও এসএসএইচ কী তৈরি করেন না, তবে আপনাকে এটি করতে হবে।

অতিরিক্ত তথ্য হিসাবে, এই পরিবর্তনটি করার পরেও আমি একই ত্রুটি পেয়েছিলাম:

অনুমতি অস্বীকৃত।

আমার ক্ষেত্রে, সমস্যাটি হ'ল আমি উইন্ডোজ শেলটি এনজিও কমান্ড কার্যকর করতে ব্যবহার করেছিলাম; যেহেতু এই কমান্ডটি এসএসএইচ বাক্যাংশের অনুরোধের জন্য একটি প্রম্পট খোলার উচিত এবং উইন্ডোজ শেল এই ধরণের প্রম্পটগুলি না খোলায়, প্রমাণীকরণটি কেবল ব্যর্থ হয়েছিল।

সুতরাং, আমাকে কেবল গিট শেলটি খুলতে হবে এবং সেখানে এনজিএ কমান্ডটি কার্যকর করতে হবে, এসএসএইচ শব্দটি প্রম্পটে প্রতিবারই এটি জিজ্ঞাসা করা উচিত এবং "ভয়েলি" ... এটি ঠিক কাজ করেছিল!


-1
    # create the company identity file
    ssh-keygen -t rsa -b 4096 -C "first.last@corp.com"
    # save private key to ~/.ssh/id_rsa.corp, 
    cat ~/.ssh/id_rsa.corp.pub # copy paste this string into your corp web ui security ssh keys

    # create your private identify file
    ssh-keygen -t rsa -b 4096 -C "me@gmail.com"
    # save private key to ~/.ssh/id_rsa.me, note the public key ~/.ssh/id_rsa.me.pub
    cat ~/.ssh/id_rsa.me.pub # copy paste this one into your githubs, private keys

    # clone company internal repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@git.in.corp.com:corp/project.git

    export git_msg="my commit msg with my corporate identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@corp.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # clone public repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@github.com:acoolprojectowner/coolproject.git

    export git_msg="my commit msg with my personal identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@gmail.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.me -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # stop :: how-to use different ssh identity files
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.