প্রদত্ত ব্যবহারকারীর সমস্ত লগইন (অর্থাৎ আমি) একই ssh-agent ব্যবহার করে তা নিশ্চিত করার জন্য একটি সুবিধাজনক উপায় আছে? আমি বেশিরভাগ সময় এই কাজটি করার জন্য একটি স্ক্রিপ্টকে হ্যাক করেছি, কিন্তু আমি মনে করি যে এটি করার কিছু উপায় ছিল যা আমি মিস করেছি। উপরন্তু, যে সময় থেকে কম্পিউটিং প্রযুক্তির আশ্চর্যজনক অগ্রগতি হয়েছে, উদাহরণস্বরূপ এই ওয়েবসাইট।
তাই লক্ষ্য এখানে যে
- যখনই আমি বক্সে লগ ইন করব, এসএসএইচ এর মাধ্যমে কিনা, অথবা গ্রাফিকাল সেশনে জিডিএম / কেডিএম / ইত্যাদি থেকে শুরু করে, অথবা কনসোলে:
- যদি আমার ব্যবহারকারী নাম বর্তমানে নেই
ssh-agent
চলমান, এক শুরু হয়, পরিবেশ ভেরিয়েবল রপ্তানি, এবংssh-add
বলা হয়। - অন্যথা, বিদ্যমান এজেন্টের সমন্বয়গুলি লগইন অধিবেশনটির পরিবেশ ভেরিয়েবলগুলিতে রপ্তানি করা হয়।
- যদি আমার ব্যবহারকারী নাম বর্তমানে নেই
প্রশ্ন বাক্স যখন একটি রিলে পয়েন্ট হিসাবে ব্যবহার করা হয় যখন এই সুবিধা বিশেষ করে মূল্যবান ssh
একটি তৃতীয় বাক্সে ing। এই ক্ষেত্রে এটি যখন আপনি ssh প্রতিবার সিজিআই কী পাসফ্রেজ টাইপ করতে এবং এড়িয়ে যেতে চান, উদাহরণস্বরূপ, করবেন git push
অথবা অন্যকিছু.
নীচে দেওয়া স্ক্রিপ্টটি বেশিরভাগ নির্ভরযোগ্যভাবে কাজ করে, যদিও এক্স ক্র্যাশ হওয়ার পরে এটি সম্প্রতি বোট হয়ে গেছে এবং আমি তখন অন্য গ্রাফিকাল সেশন শুরু করেছি। যে উদাহরণস্বরূপ অন্য স্ক্রুতা যাচ্ছে যাচ্ছে হতে পারে।
এখানে আমার খারাপ-ভাল-স্ক্রিপ্ট। আমি আমার থেকে এই উৎস .bashrc
।
# ssh-agent-procure.bash
# v0.6.4
# ensures that all shells sourcing this file in profile/rc scripts use the same ssh-agent.
# copyright me, now; licensed under the DWTFYWT license.
mkdir -p "$HOME/etc/ssh";
function ssh-procure-launch-agent {
eval `ssh-agent -s -a ~/etc/ssh/ssh-agent-socket`;
ssh-add;
}
if [ ! $SSH_AGENT_PID ]; then
if [ -e ~/etc/ssh/ssh-agent-socket ] ; then
SSH_AGENT_PID=`ps -fC ssh-agent |grep 'etc/ssh/ssh-agent-socket' |sed -r 's/^\S+\s+(\S+).*$/\1/'`;
if [[ $SSH_AGENT_PID =~ [0-9]+ ]]; then
# in this case the agent has already been launched and we are just attaching to it.
##++ It should check that this pid is actually active & belongs to an ssh instance
export SSH_AGENT_PID;
SSH_AUTH_SOCK=~/etc/ssh/ssh-agent-socket; export SSH_AUTH_SOCK;
else
# in this case there is no agent running, so the socket file is left over from a graceless agent termination.
rm ~/etc/ssh/ssh-agent-socket;
ssh-procure-launch-agent;
fi;
else
ssh-procure-launch-agent;
fi;
fi;
এটা করার জন্য একটি ভাল উপায় আছে আমাকে বলুন। এছাড়াও অসঙ্গতি / gaffes nitpick না দয়া করে (যেমন নির্বাণ var
উপাদান etc
); আমি কিছুক্ষণ আগে এটি লিখেছি এবং অনেক কিছু শিখেছি।