উইন্ডোজে গিট ব্যাশ ব্যবহার করার সময় প্রাইভেট কীটি ডিক্রিপ্ট করার জন্য পাসওয়ার্ডটি প্রতিবার প্রবেশ করতে হবে তা কীভাবে প্রতিরোধ করবেন?


125

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

উত্তর:


255

উইন্ডোজ ব্যবহারকারীদের জন্য, কেবলমাত্র একটি নোট যা আমি যখন এটি শুরু করি তখন একবারে আমাকে লগ ইন করার জন্য এইভাবে আমি গিট ব্যাশ পরিবেশটি সেট আপ করেছি। আমি আমার ~/.bashrcফাইল সম্পাদনা করছি :

eval `ssh-agent`
ssh-add

সুতরাং আমি যখন গিট বাশ শুরু করি তখন মনে হয়:

Welcome to Git (version 1.7.8-preview20111206)
(etc)
Agent pid 3376
Enter passphrase for /c/Users/starmonkey/.ssh/id_dsa:
Identity added: /c/Users/starmonkey/.ssh/id_dsa (/c/Users/starmonkey/.ssh/id_dsa)

এবং এখন আমি প্রতিবার লগইন না করে অন্যান্য সার্ভারগুলিতে এসএসএস করতে পারি।


9
আপনার যদি ~ / .bashrc ফাইল না থাকে তবে কেবল একটি নতুন পাঠ্য ফাইল (নোটপ্যাড বা অন্য কোনও সম্পাদক) তৈরি করুন এবং উল্লিখিত দুটি লাইনের স্টারমনকি যুক্ত করুন।
পিবিজেড

7
'~' আপনার "হোম ডিরেক্টরি" নির্দেশ করে। উইন্ডোজে, আপনি একটি কমান্ড শেল (সেন্টিমিটার) খোলার মাধ্যমে এবং "প্রতিধ্বনি% USERPROFILE%" টাইপ করে এটি সন্ধান করতে পারেন।
হক্কে পার্কার

14
আমার জন্য এই সিনট্যাক্সটি কাজ করছে না। eval $(ssh-agent)পরিবর্তে আমাকে লিখতে হয়েছিল ।
সংঘর্ষ

1
আমার সমস্যাটি ছিল যে এসএসএড-অ্যাড ব্যবহারের জন্য আমার ফাইলটি নির্দিষ্ট করা দরকার। সম্ভবত আমার একাধিক রয়েছে এবং এটি ডিফল্ট নামটি ব্যবহার করে নি। উদাহরণssh-add ~/.ssh/myfile_rsa
সিনট্যাক্স ত্রুটি

1
copy > ~/.bashrcউইন্ডোতে বাশার্ক ফাইলটি তৈরি করতে গিট ব্যাশে, ত্রুটিটি উপেক্ষা করুন
রুবেন

61

এই উত্তরটি কীভাবে গিটহাবের ব্যবহারকারীর নাম এবং পাসওয়ার্ডকে স্থায়ীভাবে সংরক্ষণ করা যায় তা এসএসএইচ কী পাসফ্রেজ নয় explains

উইন্ডোজে, কেবল চালান run

$ git config --global credential.helper wincred

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

যেমনটি রয়েছে, প্রতিবার ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রবেশ না করেই গিটহাবে পুশ করুন (উইন্ডোজে গিট ব্যাশ)


2
এই আদেশের পরে আপনাকে আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড টাইপ করতে হবে।
স্টিফেন টুন অং

5
এটি কি এসএসএইচ কী বা কেবল এইচটিটিপিএস (ব্যবহারকারীর নাম এবং পাসওয়ার্ড) প্রমাণীকরণের সাথে সম্পর্কিত? প্রশ্নটি এসএসএইচ কীগুলি ব্যবহার করার বিষয়ে বলে মনে হচ্ছে।
শান

আমার জন্য নিখুঁতভাবে কাজ করেছেন, আমি অনুমান করি যে আমি এইচটিটিপিএস (ব্যবহারকারীর নাম এবং পাসওয়ার্ড) প্রমাণীকরণ ব্যবহার করছি।
জোনাটান

এটি চালানোর ফলে কোনও আউটপুট পাওয়া যায় না।
ব্যবহারকারী 9993

@ user9993 এটি করবে না। এটি একটি কনফিগারেশন পরিবর্তন, যাতে কোনও আউটপুট তৈরি করা হবে না, এমন সময় gitকনফিগারেশন নির্দেশের সেট অনুসারে এর আচরণ পরিবর্তন করবে।
স্টারবিয়াম্রেনবোলাবস

9

আমি নতুন টার্মিনালগুলি খোলার সময় আমার এসএসএইচ পাসফ্রেজটি টাইপ না করা পছন্দ করি; দুর্ভাগ্যক্রমে স্টারমনকি সমাধানে প্রতিটি সেশনের জন্য পাসওয়ার্ড টাইপ করা দরকার to পরিবর্তে, আমার .bash_profileফাইলটিতে এটি রয়েছে:

# Note: ~/.ssh/environment should not be used, as it
#       already has a different purpose in SSH.

env=~/.ssh/agent.env

# Note: Don't bother checking SSH_AGENT_PID. It's not used
#       by SSH itself, and it might even be incorrect
#       (for example, when using agent-forwarding over SSH).

agent_is_running() {
    if [ "$SSH_AUTH_SOCK" ]; then
        # ssh-add returns:
        #   0 = agent running, has keys
        #   1 = agent running, no keys
        #   2 = agent not running
        ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
    else
        false
    fi
}

agent_has_keys() {
    ssh-add -l >/dev/null 2>&1
}

agent_load_env() {
    . "$env" >/dev/null
}

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

if ! agent_is_running; then
    agent_load_env
fi

# If your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
# to paste the proper path after ssh-add
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

unset env

এটি নতুন টার্মিনাল সেশনের জন্য আমার পাসফ্রেজের কথা মনে রাখবে; বুট করার পরে যখন আমি প্রথম টার্মিনালটি খুলি তখন আমাকে কেবল এটি টাইপ করতে হবে।

আমি যেখানে পেয়েছি তা জমা দিতে চাই; এটি অন্য কারও কাজের পরিবর্তন, তবে কোথা থেকে এসেছে তা মনে করতে পারছি না। ধন্যবাদ বেনাম লেখক!

আপডেট 2019-07-01: আমি মনে করি না যে এই সমস্ত প্রয়োজনীয়। আমার .bash_profileফাইলটি এসএসএল-এজেন্ট চালায় তা নিশ্চিত করে আমি এখন ধারাবাহিকভাবে কাজ করছি :

eval $(ssh-agent)

তারপরে আমি sshএটির মতো একটি কনফিগারেশন ফাইল সেট আপ করব :

touch ~/.ssh/config
chmod 600 ~/.ssh/config
echo 'AddKeysToAgent yes' >> ~/.ssh/config

আমি এখনও প্রতিবার আমার পাসফ্রেজ চেয়েছি।
রায়ান

1
@ রায়ান আশা করি আমি যে আপডেটটি সম্প্রতি যুক্ত করেছি তা আপনার সমস্যার সমাধান করবে। আমি তথ্য আপ টু ডেট এ ব্লগ পোস্টে রাখা conan.is/blogging/clojure-on-windows.html , এবং আমি একই প্রশ্ন জিজ্ঞাসা নিজেকে stackoverflow.com/questions/52423626/...
কোনান

ধন্যবাদ, আমি এটি পরীক্ষা করে দেখব।
রায়ান

@ কনন বাশ সেশনে প্রতি আপডেট হওয়া সমাধান কাজ করে। আমি আমার চলমান বাশ সেশনটি বন্ধ করার পরে এবং একটি নতুন খোলার পরে আমাকে আবার পাসওয়ার্ড দেওয়ার জন্য অনুরোধ করা হয়েছিল।
তুষার রাজ

5

যদি আমি প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে আপনি ইতিমধ্যে বিল্ড সার্ভিসে কোনও অনুমোদিত এসএসএইচ কী ব্যবহার করছেন, তবে আপনি প্রতিটি ক্লোনটির জন্য পাসফ্রেজ টাইপ না করে এড়াতে চান?

আমি এটি করার দুটি উপায় সম্পর্কে ভাবতে পারি:

  1. যদি আপনার বিল্ড পরিষেবা ইন্টারেক্টিভভাবে শুরু করা হয়: আপনি বিল্ড পরিষেবাটি শুরু করার আগে ssh-agentপর্যাপ্ত দীর্ঘ সময়সীমা ( -tবিকল্প) দিয়ে শুরু করুন। তারপরে ssh-addআপনার বিল্ড পরিষেবাটি শুরু করার আগে আপনার প্রয়োজনীয় সমস্ত প্রাইভেট কী যুক্ত করতে (এমএসজিজিট থাকা উচিত) ব্যবহার করুন। আপনাকে এখনও সমস্ত পাসফ্রেজ টাইপ করতে হবে, তবে প্রতি পরিষেবা চালু হওয়ার পরে একবার।

  2. আপনি যদি পাসফ্রেসগুলি একেবারে টাইপ না করে এড়াতে চান তবে আপনি /server/50775/how-do-i-change-my- এ বর্ণিত এসএসএইচ কী থেকে সর্বদা পাসফ্রেজগুলি সরিয়ে ফেলতে পারেন you খালি নতুন পাসফ্রেজ সেট করে ব্যক্তিগত-কী- পাসফ্রেজ। এটি পুরোপুরি পাসওয়ার্ডের সাথে সম্পূর্ণ করা উচিত, তবে এটি আগের বিকল্পের চেয়ে কম সুরক্ষিত।


2 য় বিকল্পের জন্য ধন্যবাদ, আমার এটির দরকার ছিল।
স্ট্যানিস্লাভ ভার্জিকোভস্কি

1

আমি যখন আমার কোডটি ঠেলে দেওয়ার চেষ্টা করেছি তখন আমি নীচের ত্রুটি পেয়েছি:

$ git push origin dev

remote: Too many invalid password attempts. Try logging in through the website with your password.
fatal: unable to access 'https://naushadqamar-1@bitbucket.org/xxxx/xxxx-api.git/': The requested URL returned error: 403

কয়েক ঘন্টা অনুসন্ধানের পরে, আমি নীচের কমান্ডটি ব্যবহার করার দরকার খুঁজে পেয়েছি:

$ git config --global credential.helper cache

উপরের কমান্ডটি কার্যকর করার পরে, আমি আমার গিটহাবের ব্যবহারকারীর নাম এবং পাসওয়ার্ড দেওয়ার প্রম্পট পেয়েছি। সঠিক শংসাপত্র সরবরাহ করার পরে, আমি আমার কোডটি ধাক্কা দিতে সক্ষম হয়েছি।


এটি সবেমাত্র উত্পন্ন "গিট: 'শংসাপত্র-ক্যাশে' গিট কমান্ড নয়" " তবে "গিট কনফিগারেশন - গ্লোবাল ক্রেডেনসিয়াল.হেল্পার স্টোর" কাজ করেছে - এটি সেরা নাও হতে পারে তবে আমি আমার পছন্দের এসএসএইচের চেয়ে এইচটিটিপিএস ব্যবহার করতে বাধ্য এবং কেবল এটি কাজ করতে চাই।
টেরি ব্রাউন

0

সঠিক সমাধানটি হ'ল:

  1. উইন্ডোজ ডিফল্ট টার্মিনাল চালান - সেমিডি এবং আপনার মাস্টার প্রোফাইলের ডিরেক্টরি পান

    echo %USERPROFILE%
    
  2. উপরের ডিরেক্টরিতে গিট বাশ চালান এবং .bashrcকমান্ড দিয়ে ফাইলটি তৈরি করুন

    echo "" > .bashrc
    
  3. .bashrcআপনার প্রিয় পাঠ্য সম্পাদক সহ ফাইলটি খুলুন এবং গিটহাব সহায়তা থেকে সেই ফাইলটিতে কোড পেস্ট করুন:

    env=~/.ssh/agent.env
    ...
    COPY WHOLE CODE FROM URL - I can't add it to Stack Overflow because it breaks layout... OMG!
    
  4. গিট ব্যাশ পুনরায় আরম্ভ করুন এবং এটি আপনাকে আপনার পাসওয়ার্ডের জন্য জিজ্ঞাসা করবে (কেবলমাত্র প্রথমবার) এবং সম্পন্ন হয়েছে। আবার কোনও পাসওয়ার্ড বিরক্ত করছে না।


-1

আপনার ব্যবহারকারীর ফোল্ডারের authorized_keysনীচে ফাইলটি তৈরি করতে হবে .sshযার অধীনে আপনি সংগ্রহস্থল সার্ভারের সাথে সংযোগ করতে চলেছেন। উদাহরণস্বরূপ, অভিমানী আপনি ব্যবহারকারী নাম ব্যবহার buildserviceউপর repo.serverআপনি চালাতে পারেন:

cd ~buidservice
mkdir ./ssh
cat id_rsa.pub >> .ssh/authorized_keys

তারপরে আপনাকে নিম্নলিখিত জিনিসগুলি পরীক্ষা করতে হবে:

  1. এটি সম্পর্কিত id_rsaপ্রাইভেট কী উপস্থাপন করা হয়েছে builservice@build.server:~/.shh/id_rsa

  2. Repo.server এর সেই ফিঙ্গারপ্রিন্টটি buildservice@build.server:~/.ssh/known_hostsফাইলে সংরক্ষণ করা হয় । সাধারণত এটির sshসাথে সংযোগ স্থাপনের প্রথম প্রয়াসের পরে সম্পন্ন হবে repo.server


আমি বলতে ভুলে গেছি। উইন্ডোজ অধীনে আপনার হোম ডিরেক্টরি সম্ভবত সি হতে হবে: \ ব্যবহারকারী \ ব্যবহারকারীর নাম
beduin

5
মিমি .. গিট ব্যাশ এ সব রয়েছে, প্রশ্নের আরও শর্ত সহকারে পড়ুন। এছাড়াও প্রশ্ন থেকে আমি ধরে নিয়েছি যে কী-জুড়ি ইতিমধ্যে তৈরি করা হয়েছে (কারণ এটি জিজ্ঞাসা করা হয়েছিল কীভাবে রেপো সার্ভারকে id_rsa.pub মনে রাখতে বাধ্য করবেন)) ফর্ম্যাটিংয়ের জন্য দুঃখিত।
beduin

1
ঠিক আছে, 'গিট বাশ' এর আগে কখনও শুনিনি। দুঃখিত '
এগুলি

আমি ধরে নিচ্ছি এটি এমএসএসজিট ব্যবহার করছে। আমি ট্যাগ যুক্ত করছি।
অ্যাডাম ডাইমিট্রিক

3
সতর্কবাণী! ব্যবহারের ফলে cat id_rsa.pub > .ssh/authorized_keysবিদ্যমান বিদ্যমান কীগুলি ওভাররাইট করা হবে। >>ওভাররাইটের পরিবর্তে যুক্ত করতে ব্যবহার করুন।
ডেভিড পার্সন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.