উইন্ডোজে গিট বাশ শুরু করার সময় এসএসএইচ এজেন্ট চালাচ্ছেন


152

আমি গিট ব্যাশ ব্যবহার করছি। আমি ব্যবহার করতে

eval `ssh-agent.exe`
ssh-add /my/ssh/location/

প্রতিবার যখন আমি একটি নতুন গিট বাশ শুরু করি।

স্থায়ীভাবে ssh এজেন্ট সেট করার কোন উপায় আছে কি? অথবা উইন্ডোজের কী ssh কী পরিচালনা করার ভাল উপায় আছে?

আমি একজন নতুন লোক, দয়া করে আমাকে বিস্তারিত টিউটোরিয়াল দিন, ধন্যবাদ!


3
হয় /my/ssh/location/ভালো কিছু করার জন্য equalivent /c/Users/Foobar/.ssh/?
নিক

একটি অনুরূপ সমস্যা সুপারইউজার.কম / 12/843/478378 এ পোস্ট করা হয়েছে যা এখনই সমাধান হয়েছে। নিম্নলিখিত সংক্ষেপে gist.github.com/jiggneshhgohel/afe96f0d57bdbf8beba305a73905402d সমস্ত বিবরণ রয়েছে । ধন্যবাদ।
জিগনেশ গোহেল

উত্তর:


138

একটি Git ব্যাশ অধিবেশন, আপনি একটি স্ক্রিপ্ট যোগ করতে পারেন ~/.profileবা ~/.bashrc( সঙ্গে ~সাধারণত সেট হচ্ছে%USERPROFILE% ) স্বয়ংক্রিয়ভাবে লঞ্চ বললেন সেশনের জন্য জন্য, ssh-agent। যদি ফাইলটি না থাকে তবে কেবল এটি তৈরি করুন।

গিটহাব এটি " এসএসএইচ কী পাসফ্রেসের সাথে কাজ করা " তে বর্ণনা করেছেন

এই নিবন্ধটির " গিট অন গিট অন অটো-লঞ্চিং এসএস-এজেন্ট " বিভাগে একটি শক্তিশালী স্ক্রিপ্ট রয়েছে যা এজেন্টটি চলমান কিনা তা পরীক্ষা করে if নীচে কেবল একটি স্নিপেট রয়েছে, সম্পূর্ণ সমাধানের জন্য গিটহাব নিবন্ধটি দেখুন।

# This is just a snippet. See the article above.
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

অন্যান্য উৎস:

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


আমার একটি সামান্য বিরক্তি ছিল আমি যদি জানতাম যে আমি গিট ব্যবহার করব না আমি ssh কী পাসফ্রেজে প্রবেশ করবো না, তারপরে আমি খোলা প্রতিটি শেলই আবার এটি চেয়েছিল। এটি স্টেট 1, এজেন্ট ডাব্লু / ও কী চালাচ্ছে, সুতরাং আপনি এই বিভাগ থেকে এসএসএড-অ্যাড সরিয়ে ফেলতে পারবেন তবে আপনি নিজের পাসফ্রেজটি প্রথমবারের মধ্যে প্রবেশ না করলে আপনি নিজেই এসএসএড-অ্যাড চালনা না করা পর্যন্ত আপনাকে আর জিজ্ঞাসা করা হবে না।
Andy2K11

@ গর্ডন সেই সাহায্যের কোন অংশটি ? .github.com/articles/working-with-ssh-key-passphrases গিটহাব লিঙ্কটি পরিবর্তিত হয়েছে? এর সামগ্রী এখনও আছে এবং এখনও এই উত্তরের জন্য প্রাসঙ্গিক বলে মনে হচ্ছে।
ভোনসি

1
@ অ্যান্ডি 2 কে 11 যদি আপনি প্রথমবারের মতো পাসফ্রেজটি প্রবেশ করতে চান এবং শেলটি খোলার সময় নয়, আমার কাছে সবচেয়ে পরিষ্কার উপায় আপনি যেভাবে উল্লেখ করেছেন, .bash_profile থেকে ssh-add অপসারণ করছে এবং এতে "অ্যাডকিসটয়েজেন্ট হ্যাঁ" যুক্ত করছে আপনার .ssh / কনফিগারেশন ফাইল (এই উত্তরটি দেখুন: superuser.com/a/1114257/523133 )। এইভাবে আপনাকে এসএসএড-এড চালানোর কথা মনে রাখতে হবে না।
হার্ডসেটিং

30

পিএস: এই নির্দেশাবলী উইন্ডোজ 10 লিনাক্স সাবসিস্টিমে খোলা একটি বাশ শেলের প্রসঙ্গে এবং উইন্ডোতে উবুন্টু-তে বাশ-এর ​​সাথে উইন্ডোজে উত্পন্ন সিম-লিঙ্কিং এসএসএইচ কীগুলি সম্পর্কে উল্লেখ করে না

1) আপনার .Bashrc এতে অনুসরণ করে আপডেট করুন

# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"

function start_agent {
    echo "Initializing new SSH agent..."
    touch $SSH_ENV
    chmod 600 "${SSH_ENV}"
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    kill -0 $SSH_AGENT_PID 2>/dev/null || {
        start_agent
    }
else
    start_agent
fi

2) তারপরে $ source ~/.bashrcআপনার কনফিগারটি পুনরায় লোড করতে রান করুন ।

উপরের পদক্ষেপগুলি https://github.com/abergs/ubuntuonwindows#2-start-an-bash-ssh-agent-on-launch থেকে নেওয়া হয়েছে

3) উপস্থিত না থাকলে একটি এসএসএইচ কনফিগারেশন ফাইল তৈরি করুন। একটি নতুন তৈরি করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করুন:.ssh$ touch config

4) নিম্নলিখিত অনুসরণ করুন ~/.ssh/config

Host github.com-<YOUR_GITHUB_USERNAME> 
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes


Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes

<More hosts and github configs can be added in similar manner mentioned above>

৫) কমান্ডটি ব্যবহার করে এসএসএইচ এজেন্টে আপনার কী যুক্ত করুন $ ssh-add ~/.ssh/id_work_gmailএবং তারপরে আপনি ssh ব্যবহার করে আপনার গিথব অ্যাকাউন্ট বা রিমোট হোস্টের সাথে সংযোগ করতে সক্ষম হবেন। যেমন উপরের কোড উদাহরণগুলির প্রসঙ্গে:

$ ssh github.com-<YOUR_GITHUB_USERNAME>

অথবা

$ ssh <USER>@csexperimental.abc.com

এসএসএইচ এজেন্টের সাথে এই কী যুক্ত করা কেবলমাত্র একবারেই করা উচিত।

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

বিঃদ্রঃ:

ধন্যবাদ।


1
আকর্ষণীয় বিকল্প, ডাব্লুএসএল ব্যবহার করে। +1
ভনসি

@ জিগনেশগোহেল আপনাকে ধন্যবাদ, এই স্ক্রিপ্টটি নিখুঁত এবং বনাম পরিষ্কার! আমি যদিও আশ্চর্য হয়েছি, আপনি কেন >> "${SSH_ENV}"? এটা ঠিক করা উচিত নয় > "${SSH_ENV}"? আপনার অবশ্যই কাজ করে তবে এটি ধীরে ধীরে দীর্ঘ এবং দীর্ঘ ~/.ssh/environmentফাইলের সাথে শেষ হয় , কারণ (কারণ আমি বর্তমানে মনে করি !?) কোনও কারণ নেই ... অনেক, যদিও অনেক ধন্যবাদ! আমি মনে করি এই স্ক্রিপ্টটি কেবল .bashrcডাব্লুএসএল উবুন্টুর জন্য ডিফল্টর মধ্যে অন্তর্ভুক্ত করা উচিত , এটি এত দরকারী!
মাইকবিটোন

5

আমি এটি অর্জনের সবচেয়ে সহজ উপায়টি খুঁজে পেয়েছিলাম পেজেন্টকে এসএসএইচ এজেন্ট এবং প্লিংক হিসাবে ব্যবহার করা।

আপনার রিমোটে ব্যবহৃত হোস্টনামের জন্য আপনার একটি পুটি সেশন কনফিগার করা দরকার।

আপনার এছাড়াও plink.exe প্রয়োজন হবে যা পুট্টি হিসাবে একই সাইট থেকে ডাউনলোড করা যেতে পারে।

এবং আপনার কী বোঝা নিয়ে পেজেন্ট চলমান দরকার। আমার প্রারম্ভিক ফোল্ডারে পেজেন্টের শর্টকাট রয়েছে যা আমি লগ ইন করার সময় আমার এসএসএইচ কীটি লোড করে।

আপনি যখন গিট-স্কেম ইনস্টল করেন তখন আপনি ওপেনএসএসএইচ না করে কচ্ছপ / প্লিংক ব্যবহারের জন্য এটি নির্দিষ্ট করতে পারেন।

নেট এফেক্টটি হ'ল আপনি গিট-ব্যাশ খুলতে পারবেন যখনই আপনার পছন্দ এবং পাসফ্রেজের জন্য চ্যালেঞ্জ না করে ধাক্কা / টানুন।

পেজেন্টে আপনার কীটি বোঝা হয়ে গেলে পুট্টি এবং উইনসিসিপি সেশনগুলির সাথে একই প্রযোজ্য। এটি জীবনকে অনেক সহজ (এবং সুরক্ষিত) জাহান্নামে পরিণত করে।


2

আমি যেমন উইন্ডোতে পুটি ব্যবহার করতে পছন্দ করি না, তাই আমি একটি খুব সাধারণ ইউটিলিটি ssh-এজেন্ট-মোড়ক তৈরি করেছি । এটি আপনার .ssh ফোল্ডারগুলি স্ক্যান করে এবং এজেন্টে আপনার সমস্ত কী যুক্ত করে। এটি কাজ করার জন্য আপনাকে কেবল এটি উইন্ডোজ স্টার্টআপ ফোল্ডারে রাখতে হবে।

অনুমান :

  • পথে ssh- এজেন্ট
  • shh-add in path (উভয়ই গিট ইনস্টল করার সময় "RED" বিকল্পটি বেছে নিয়ে
  • ব্যক্তিগত কীগুলি% USERPROFILE% /। ssh ফোল্ডারে রয়েছে
  • ব্যক্তিগত কীগুলির নাম আইডি দিয়ে শুরু হয় (উদাঃ id_rsa)

নিস! +1 টি। আমি সর্বদা ওপেনশ (পুটি নয়) দিয়ে কাজ করি, সুতরাং এটি পাসফ্রেস সহ ব্যক্তিগত কীগুলির জন্য একটি আকর্ষণীয় সমাধান।
ভোনসি

আপনি যেমন ইতিমধ্যে গিথুব এ রয়েছেন, তবে কেন কেবল উত্সটিকে গিট সংগ্রহস্থল হিসাবে পরিণত করবেন না?
থরবজর্ন রাভন অ্যান্ডারসন

পথ থেকে কেবল / রিলিজ সরিয়ে ফেলুন। ;-)
এরেজ এ। কর্ন

1

আমি সর্বোত্তম উত্তরের ভিত্তিতে এটি কাজ করতে পারি না, কারণ সম্ভবত আমি এই জাতীয় পিসি নবুব এবং স্পষ্ট কিছু মিস করছি। তবে কেবল এফওয়াইআই যদি এটি আমার মতো চ্যালেঞ্জিত কাউকে সহায়তা করে তবে শেষ পর্যন্ত যা কাজ করেছে তা এখানে লিঙ্কগুলির একটির মাধ্যমে হয়েছিল (উত্তরগুলিতে উল্লেখ করা হয়েছে)। এটি কেবল আমার সাথে নিম্নলিখিতগুলি আটকানো জড়িত .bash_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

আমার কাছে সম্ভবত কিছু অদ্ভুতভাবে কনফিগার করা আছে, তবে আমি এটি আমার .profileবা আমার সাথে যুক্ত করার পরে সফল হইনি .bashrc। আমি যে অন্যান্য আসল চ্যালেঞ্জটি চালিয়েছি তা হ'ল আমি এই কম্পিউটারে প্রশাসক নই এবং এটি আইটি দ্বারা অনুমোদিত না করে পরিবেশের পরিবর্তনগুলি পরিবর্তন করতে পারি না, সুতরাং এটির জন্য এটি একটি সমাধান যা এটি অ্যাক্সেস করতে পারে না।

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


1

এটি আপনার ~ / .bashrc (বা এটি থেকে উত্সযুক্ত একটি ফাইল) এ রাখুন যা শেল প্রতি অযথা অকারণে একাধিকবার চালানো থেকে বিরত থাকবে:

if [ -z "$SSH_AGENT_PID" ]; then
        eval `ssh-agent -s`
fi

এবং তারপরে Add / .ssh / কনফিগারেশনে "AddKeysToAgent হ্যাঁ" যুক্ত করুন:

Host *
    AddKeysToAgent yes

আপনার সার্ভারে সাধারণত (অথবা গিট টান) এসএসএস করুন এবং আপনাকে প্রতি সেশনে একবারে পাসওয়ার্ড / পাসফ্রেজের জন্য জিজ্ঞাসা করা হবে।


0

আপনার ~ ডিরেক্টরিতে একটি নতুন .bashrc ফাইল তৈরি করুন ।

সেখানে আপনি আপনার কমান্ডগুলি রাখতে পারেন যা আপনি প্রতিবার ব্যাশ শুরু করার সাথে সাথে কার্যকর করতে চান


এটা কাজ করতে হবে। যেমন কিছু সহজ করা চেষ্টাসব .bashrc(যেমন ফাইল echo testএবং চেক যদি এটা যখন আপনি গীত ব্যাশ চালানো লোড হচ্ছে।
ডেভিড Ferenczy Rogožan

আরও মনে রাখবেন যে কোন সংস্করণটি ইনস্টল করা হয়েছে এবং ব্যবহারকারীর বিকল্পগুলি নির্দিষ্ট করে তার উপর নির্ভর করে it পাওয়ারশেলের মধ্যে গিট ব্যাশ / সাইগউইনের তুলনায় সম্ভবত different এর চেয়ে আলাদা।
ড্রাগন 788

উইন্ডোজ অন ইয়ার, .bashrcআপনার ব্যবহারকারীর ফোল্ডার যেমন C:\Users\john
মার্টিন ভ্যান ড্রিল

0

এই উত্তর থেকে সহজ দুটি স্ট্রিং সমাধান :

জন্য SH , ব্যাশ , ইত্যাদি:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh

জন্য csh শেল , tcsh শেল , ইত্যাদি:

# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.