একটি টোকেন ব্যবহার করে গিটহাবের সাথে প্রমাণীকরণ করুন


118

আমি ব্যক্তিগত অ্যাক্সেস টোকেন ব্যবহার করে গিটহাবের সাথে প্রমাণীকরণের চেষ্টা করছি। গিথুবে সহায়তা ফাইলগুলিতে এটি সিআরএল পদ্ধতিটি প্রমাণীকরণের জন্য ব্যবহার করতে বলেছে ( https://help.github.com/articles/creating-an-access-token-for-command-line-use )। আমি এটি চেষ্টা করেছি, তবে আমি এখনও গিটহাবের দিকে ধাক্কা দিতে পারি না। দয়া করে মনে রাখবেন, আমি একটি অচিহ্নিত সার্ভার (ট্র্যাভিস-সিআই) থেকে চাপ দেওয়ার চেষ্টা করছি।

cd $HOME
git config --global user.email "emailaddress@yahoo.com"
git config --global user.name "username"

curl -u "username:<MYTOKEN>" https://github.com/username/ol3-1.git
git clone --branch=gh-pages https://github.com/username/ol3-1.git gh-pages

cd gh-pages
mkdir buildtest
cd buildtest
touch asdf.asdf

git add -f .
git commit -m "Travis build $TRAVIS_BUILD_NUMBER pushed to gh-pages"
git push -fq origin gh-pages

এই কোডটি ত্রুটিগুলির কারণ ঘটায়:

রিমোট: স্কলব্ল্যাজব্যাক্সে / অ্যালআর -1.g.g বেনামে অ্যাক্সেস অস্বীকার।

মারাত্মক: ' https://github.com/scuzzlebuzzle/ol3-1.git/ ' "এর জন্য প্রমাণীকরণ ব্যর্থ হয়েছে

উত্তর:


191

আপনার curlআদেশ সম্পূর্ণ ভুল। আপনি নিম্নলিখিত ব্যবহার করা উচিত

curl -H 'Authorization: token <MYTOKEN>' ...

এটিকে বাদ দিলে, এটি যদি সত্যই ব্যক্তিগত হয় তবে এটি আপনার কম্পিউটারটিকে ভান্ডারটি ক্লোন করার অনুমোদন দেয় না। (তবে একনজরে দেখার বিষয়টি ইঙ্গিত দেয় যে এটি নয়)) আপনি সাধারণত যা করবেন তা নিম্নলিখিত:

git clone https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git --branch=gh-pages gh-pages

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

# After cloning
cd gh-pages
git remote set-url origin https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git

এটি অন্তর্ভুক্ত শংসাপত্রগুলির সাথে একটি রিমোট ব্যবহারের জন্য আপনার প্রকল্পকে ঠিক করবে।

সতর্কতা: টোকেনগুলি পড়ার / লেখার অ্যাক্সেস পেয়েছে এবং পাসওয়ার্ডের মতো আচরণ করা উচিত। ক্লোনিং করা বা একটি রিমোট যুক্ত করার সময় আপনি যদি ক্লোন URL এ আপনার টোকেন প্রবেশ করেন,Git writes it to your .git/config file in plain text, which is a security risk.


আপনার সাহায্যের জন্য আপনাকে অনেক ধন্যবাদ. এটা দুর্দান্ত কাজ করেছে। এখানে আমার পরিবর্তিত ফাইলটির একটি অনুলিপি দেওয়া হয়েছে: github.com/scuzzlebuzzle/ol3-1/blob/master/util/s.sh । আমি এটি খুব কাছাকাছি পেয়েছিলাম। কোনও কারণে এটি আমার নির্মিত বিল্ড 1 ডিরেক্টরিটিতে ধাক্কা দেয় না, তবে এটি বিল্ড ডিরেক্টরিতে ঠেলাঠেলি করে তাই এটি কাজ করে! ধন্যবাদ!
ওয়েফথেফিউচার

1
আপনি কোন সম্পাদক বোতামের কথা বলছেন তা জানি না তবে মূল রিমোটটি অপসারণ করা একেবারে প্রয়োজনীয় necessary
আয়ান স্ট্যাপলটন কর্ডাসকো

1
হেহ। কুল। সাহায্য করে আনন্দ পেলাম.
আয়ান স্ট্যাপলটন কর্ডাসকো

4
আপনাকে রিমোটটি আরএম করতে হবে না, পরিবর্তে আপনি git remote set-url origin https://scuzzlebuzzle:<MYTOKEN>@github.com/scuzzlebuzzle/ol3-1.git
সেট-

1
অনিরাপদ পদ্ধতির কী সহজেই ত্রুটিতে লগ করতে চাইবে। পরিবর্তে একটি শক্তভাবে স্কোপড ডিপ্লয়ে কী ব্যবহার করুন।
জোসেফ লাস্ট

53

প্রথমত, আপনাকে একটি ব্যক্তিগত অ্যাক্সেস টোকেন (পিএটি) তৈরি করতে হবে। এটি এখানে বর্ণিত হয়েছে: https://help.github.com/articles/creating-an-access-token-for-command-line-use/

হাসিখুশিভাবে, নিবন্ধটি আপনাকে এটি কীভাবে তৈরি করবেন তা জানায়, তবে এটির সাথে কী করা যায় তা একেবারে কোনও ধারণা দেয় না। প্রায় এক ঘন্টা ট্রলিং ডকুমেন্টেশন এবং স্ট্যাক ওভারফ্লো পরে, আমি শেষ পর্যন্ত উত্তরটি পেয়েছি:

$ git clone https://github.com/user-or-organisation/myrepo.git
Username: <my-username>
Password: <my-personal-access-token>

আমি রিমোট থেকে কাজ করার সময় কোম্পানির নীতি দ্বারা দ্বি-ফ্যাক্টর প্রমাণীকরণ সক্ষম করতে বাধ্য হয়েছিলাম এবং এখনও স্থানীয় পরিবর্তন ছিল, সুতরাং আসলে এটির cloneআমার প্রয়োজন ছিল না , তবে push। আমি রিমোটটি মুছতে এবং পুনরায় তৈরি করার জন্য আমার প্রচুর জায়গাগুলিতে পড়েছিলাম, তবে বাস্তবে আমার সাধারণ pushকমান্ড cloneউপরের মত ঠিক একই রকম কাজ করেছিল এবং রিমোটটি পরিবর্তন হয়নি:

$ git push https://github.com/user-or-organisation/myrepo.git
Username: <my-username>
Password: <my-personal-access-token>

(@ ওয়াইএমহুয়াং ডকুমেন্টেশন লিঙ্কটি দিয়ে আমাকে ডান ট্র্যাকটিতে রাখে))


তার জন্য ধন্যবাদ, আমিও একই
সূর্য প্রকাশ প্যাটেল

পুরোপুরি ঠিক আছে।
সামিম আফতাব আহমেদ

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

30

"দুর্গের চাবিগুলি" হস্তান্তর এড়াতে ...

দ্রষ্টব্য যে সিগমাভাইরাস 24 এর প্রতিক্রিয়ার জন্য আপনার ট্র্যাভিসকে মোটামুটি প্রশস্ত অনুমতি সহ একটি টোকেন দেওয়া দরকার - যেহেতু গিটহাব কেবল "আমার সমস্ত পাবলিক রেপো লিখুন" বা "আমার সমস্ত ব্যক্তিগত রেপো লিখুন" এর মতো প্রশস্ত স্কোপের সাথে টোকেন সরবরাহ করে।

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

কৌশলটি কীভাবে কাজ করে তার একটি স্কেচ এখানে ...

প্রথমে কল করা একটি আরএসএ ডিপ্লোয় কী তৈরি করুন (মাধ্যমে ssh-keygen) my_keyএবং আপনার গিথুব রেপো সেটিংসে এটি একটি ডিপ্লয় কী হিসাবে যুক্ত করুন।

তারপর ...

$ password=`openssl rand -hex 32`
$ cat my_key | openssl aes-256-cbc -k "$password" -a  > my_key.enc
$ travis encrypt --add password=$password -r my-github-user/my-repo

তারপরে $passwordআপনার ইয়ামল ফাইলটিতে যুক্ত করে ইন্টিগ্রেশন-সময়ে আপনার ডিপ্লয় কীটি ডিক্রিপ্ট করার জন্য ফাইলটি ব্যবহার করুন:

before_script: 
  - openssl aes-256-cbc -k "$password" -d -a -in my_key.enc -out my_deploy_key
  - echo -e "Host github.com\n  IdentityFile /path/to/my_deploy_key" > ~/.ssh/config
  - echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==" > ~/.ssh/known_hosts

দ্রষ্টব্য: শেষ লাইনটি গিথুবের আরএসএ কীটিকে প্রাক-জনপ্রিয় করে তোলে, যা সংযোগের সময় ম্যানুয়ালি গ্রহণের প্রয়োজনীয়তা এড়ায়।


30

OAuth টোকেন সহ অটোমেশন / গিট অটোমেশন

$ git clone https://github.com/username/repo.git
  Username: your_token
  Password:

এটি কমান্ডেও কাজ করে git push

তথ্যসূত্র: https://help.github.com/articles/git-automation-with-oauth-tokens/


4
- মূল সেট Git যাতে আপনি, যেমন এখানে বর্ণিত আপনার টোকেনটি জন্য সব সময়ে হাজির হওয়া প্রয়োজন হবে না হয় help.github.com/articles/caching-your-github-password-in-git এই প্রশ্নের অন্য উত্তর আপনার টোকেনটি .git / কনফিগারেশনে প্লেইন টেক্সটে লিখে শেষ করা হবে যা একটি সুরক্ষা ঝুঁকি হিসাবে বিবেচিত হতে পারে।
জেরোমে

দুর্দান্ত রেফারেন্স - txs!
ডালক্যাম

সুদৃশ্য ধন্যবাদ https: // <mytoken> @mygiturl আমার .git \ কনফিগারেশনে একটি ট্রিট কাজ করেছেন
Tyeth

22

এটি ssh ব্যবহার করে আমার জন্য কাজ করেছে :

সেটিংসবিকাশকারী সেটিংসনতুন টোকেন উত্পন্ন করে

git remote set-url origin https://[APPLICATION]:[NEW TOKEN]@github.com/[ORGANISATION]/[REPO].git

2
এটি এই ফর্ম্যাটটি ব্যবহার করে ব্যক্তিগত অ্যাক্সেস টোকেনগুলির জন্যও কাজ করে:git remote add origin https://[USERNAME]:[NEW TOKEN]@github.com/[USERNAME]/[REPO].git
কমান্ডজেড

আমার করতে হয়েছিলgit remote add origin https://[USERNAME]:[TOKEN]@git.mycompany.com/[ORGANIZATION]/[REPO].git
প্যাকওভারফ্লো

এটি কি খারাপ ধারণা নয়? টোকন কনসোলের ইতিহাসে ক্যাশে যাবে না?
TheRealChx101

আমার জন্য গিট রিমোট অ্যাড অরিজিনের জন্যও কাজ করেছেন https: // [টোকেন] @ git.mycompany.com / [সংগঠন] / [রেপো] .গিট
থমাস চফিয়ল

@ TheRealChx101 git remote set-url origin https://[TOKEN]@git.mycompany.com/[ORGANIZATION]/[REPO].git> /dev/null 2>&1আপনি অনিরাপদ গিট আউটপুট লগিং এড়ানোর জন্য এমন কিছু ব্যবহার করতে পারেন । লগ এ থাকা এড়ানোর জন্য টোকেনটি একটি ভেরিয়েবলে সংরক্ষণ করুন। তবে এটি কোথাও সংরক্ষণ করা দরকার। আরও সুরক্ষিত করতে আপনি এটিকে এনক্রিপ্ট করে রাখতে পারেন। এই পদ্ধতির উদাহরণস্বরূপ ট্র্যাভিস সিআই সমর্থিত।
কেপ

3

সাধারণত আমি এটি পছন্দ করি

 git push https://$(git_token)@github.com/user_name/repo_name.git

গিট_ টোকেন অ্যাজুর ডিওপগুলিতে ভেরিয়েবল কনফিগারেশন থেকে পড়ছে।

আপনি আমার সম্পূর্ণ ব্লগটি এখানে পড়তে পারেন


1

ভয়ঙ্কর 'রিমোট পাওয়া যায়নি' ত্রুটি পেয়ে আমাদের বিল্ড স্ক্রিপ্টে পুরোপুরি হার্ড কডিংটি ORG / REPO বিভাগে পুরো দিন ধরে লড়াই করার পরে অবশেষে এটি ব্যবহার করার একটি কার্যকরী সমাধান খুঁজে পেল TRAVIS_REPO_SLUG। হার্ডকডযুক্ত বৈশিষ্ট্যের জন্য এটিকে স্যুইচ করা অবিলম্বে কাজ করেছে worked

git remote set-url origin https://[ORG]:${TOKEN}@github.com/${TRAVIS_REPO_SLUG}

0

গিটহাব টোকেন প্রয়োগ করতে এত ঘন্টা লড়াই করে অবশেষে এটি নীচের মত কাজ করে:

$ cf_export GITHUB_TOKEN=$(codefresh get context github --decrypt -o yaml | yq -y .spec.data.auth.password)

  • কোড অনুসরণ করে Codefresh একটি রেপো ক্লোনিং টোকেন (ফ্রিস্টাইল ব্যবহার নির্দেশনা}
  • পরীক্ষা বহন করা: ম্যাচ শব্দের উপর সেড %d%H%M'-123456-whatever'
  • রেপোতে ফিরে ধাক্কা (যা ব্যক্তিগত রেপো )
  • ডকারহাব ওয়েবহুকগুলি দ্বারা ট্রিগার করা

সম্পূর্ণ কোডটি নিম্নলিখিত:

version: '1.0'
steps:
  get_git_token:
    title: Reading Github token
    image: codefresh/cli
    commands:
      - cf_export GITHUB_TOKEN=$(codefresh get context github --decrypt -o yaml | yq -y .spec.data.auth.password)
  main_clone:
    title: Updating the repo
    image: alpine/git:latest
    commands:
      - git clone https://chetabahana:$GITHUB_TOKEN@github.com/chetabahana/compose.git
      - cd compose && git remote rm origin
      - git config --global user.name "chetabahana"
      - git config --global user.email "chetabahana@gmail.com"
      - git remote add origin https://chetabahana:$GITHUB_TOKEN@github.com/chetabahana/compose.git
      - sed -i "s/-[0-9]\{1,\}-\([a-zA-Z0-9_]*\)'/-`date +%d%H%M`-whatever'/g" cloudbuild.yaml
      - git status && git add . && git commit -m "fresh commit" && git push -u origin master

আউটপুট ...

On branch master 
Changes not staged for commit: 
  (use "git add ..." to update what will be committed) 
  (use "git checkout -- ..." to discard changes in working directory) 

modified:   cloudbuild.yaml 

no changes added to commit (use "git add" and/or "git commit -a") 
[master dbab20f] fresh commit 
 1 file changed, 1 insertion(+), 1 deletion(-) 
Enumerating objects: 5, done. 
Counting objects:  20% (1/5) ...  Counting objects: 100% (5/5), done. 
Delta compression using up to 4 threads 
Compressing objects:  33% (1/3) ... Writing objects: 100% (3/3), 283 bytes | 283.00 KiB/s, done. 
Total 3 (delta 2), reused 0 (delta 0) 
remote: Resolving deltas:   0% (0/2)  ...   (2/2), completed with 2 local objects. 
To https://github.com/chetabahana/compose.git 
   bbb6d2f..dbab20f  master -> master 
Branch 'master' set up to track remote branch 'master' from 'origin'. 
Reading environment variable exporting file contents. 
Successfully ran freestyle step: Cloning the repo 

0

আপনি github.com পোর্টালে লগইন করতে যে পাসওয়ার্ডটি ব্যবহার করেন তা ভিএস কোড সিএলআই / শেলটিতে কাজ করে না। আপনার নতুন টোকেন তৈরি করে URL টি https://github.com/settings/tokens থেকে পিএটি টোকেন অনুলিপি করা উচিত এবং সেই স্ট্রিংটিকে পাসওয়ার্ড হিসাবে CLI এ আটকানো উচিত।


0

আপনি যদি গিটহাব এন্টারপ্রাইজ ব্যবহার করছেন এবং রেপো ক্লোনিং করছেন বা চাপ দিচ্ছেন তবে একটি ব্যবহারকারীর নাম / টোকেনের অনুরোধের পরিবর্তে 403 ত্রুটি দিলে আপনি এটি ব্যবহার করতে পারেন:

  1. রেপো মুছুন
  2. কমান্ড প্রম্পট ওপেন করুন এবং আপনি ফোল্ডারটি যে ফোল্ডারে চান তা নেভিগেট করুন
  3. টাইপ করুন:
git clone https://[USERNAME]:[TOKEN]@[GIT_ENTERPRISE_DOMAIN]/[ORGANIZATION]/[REPO].git
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.