পরে ব্যবহারের জন্য এসএনএস-এজেন্ট আমার আন -ক্রিপ্ট করা কীটি সংরক্ষণ করবে না?


12

যখনই আমি আমাদের হেডলেস উবুন্টু সার্ভার থেকে অন্য সার্ভারে এসএসএইচ করি তখন আমার কী ফাইলে পাসওয়ার্ড চাইবে। এমনকি আমি আগে সার্ভারের সাথে সংযুক্ত থাকলেও।

কেন এমন হতে পারে আপনার কোনও ধারণা আছে? এটি ssh-agentবর্তমানে চলমান নয় এমন কিছু সাধারণ বা কিছু হতে পারে ।

আমার উবুন্টু জিনোম ডেস্কটপে একই কী ঠিকঠাক কাজ করছে। উভয় সার্ভার এবং ডেস্কটপ উবুন্টু 10.10 চলছে।

ps -ef | grep '[s]sh-agent'
simon     3219     1  0 12:46 ?        00:00:00 ssh-agent

1
প্রথমে, যেমনটি আপনি বলেছিলেন, ssh-agentচলছে কিনা তা যাচাই করে নিন :ps -ef | grep '[s]sh-agent'
স্কট সিভেরেন্স

@ এমএসইভার ইয়েপ এটি প্রদর্শিত হবে। আপডেট হওয়া প্রশ্নটি দেখুন।
ট্রেফিনন

উত্তর:


10

এমনকি এজেন্ট থাকলেও, যদি নির্দিষ্ট পরিবেশের ভেরিয়েবল সেট না করা থাকে তবে আপনার এজেন্টের কোনও রেফারেন্স নেই। তদুপরি, এটি সমস্ত ঠিক আছে, এজেন্ট এবং ভেরিয়েবলগুলি থাকলেও পরিচয়টি স্বয়ংক্রিয়ভাবে এজেন্টকে প্রেরণ করা হয় না: এটি ssh-askpassকেবল এক্স সেশনে কাজ করা, এটি একটি কাজ ।

আপনি যদি ব্যাশ ব্যবহার ~/.bash_profileকরছেন তবে এই বিষয়বস্তু দিয়ে ফাইলটি তৈরি করুন :

# File: ~/.bash_profile

# source ~/.profile, if available
if [[ -r ~/.profile ]]; then
  . ~/.profile
fi

# start agent and set environment variables, if needed
agent_started=0
if ! env | grep -q SSH_AGENT_PID >/dev/null; then
  echo "Starting ssh agent"
  eval $(ssh-agent -s)
  agent_started=1
fi

# ssh become a function, adding identity to agent when needed
ssh() {
  if ! ssh-add -l >/dev/null 2>&-; then
    ssh-add ~/.ssh/id_dsa
  fi
  /usr/bin/ssh "$@"
}
export -f ssh

# another example: git
git() {
  if ! ssh-add -l >/dev/null 2>&-; then
    ssh-add ~/.ssh/id_dsa
  fi
  /usr/bin/git "$@"
}
export -f git

~/.ssh/id_dsaআপনার প্রয়োজন অনুসারে ফাইলের নামটি সংশোধন করুন এবং এই লাইনটি এতে যুক্ত করুন~/.bash_logout

# stuff to add at end of ~/.bash_logout
if ((agent_started)); then
  echo "Killing ssh agent"
  ssh-agent -k
fi

একটি সর্বশেষ নোট: এটি কোনও জিনোম সেশনে হস্তক্ষেপ করবেন না কারণ সে ক্ষেত্রে কেবল ~/.profileউত্সাহিত হয়, এবং আপনি ssh-askpassগ্রাফিকাল ইন্টারফেস থেকে উপকার পেতে পারেন যা একটি পাসফ্রেজ জিজ্ঞাসা করে এবং এটিতে প্রেরণ করে ssh-agent


ধন্যবাদ @ এঞ্জোটিব sshঅন্যান্য মেশিনে প্রবেশের জন্য এটি দুর্দান্ত কাজ করে । তবে gitসরকারী ভাণ্ডারগুলিতে চাপ বা টান দেওয়ার সময় এটি হয় না । আমি কীভাবে এটি সমাধান করতে পারি তার কোনও ধারণা আছে?
ট্রেফিনন

একটি ফাংশন অভিন্ন যোগ করুন ssh(), সেটিতে কল git()থেকে শেষ লাইনটি পরিবর্তন /usr/bin/sshকরতে /usr/bin/git। এছাড়াও, এর সাথে একটি চূড়ান্ত লাইন যুক্ত করুন export -f git
এনজোটিব

@ এঞ্জোটিব আমি এটি চেষ্টা করেছিলাম, কিন্তু এখন আপনি যখন সেট আপের উপরে তৈরি ফাইলটি sshদিয়ে মেশিনে প্রবেশ করি তখন bash_profileএটি আমাকে কীটির পাসওয়ার্ড জিজ্ঞাসা করে। কিছু কারণে এখন আমি প্রতিবার এটিতে প্রবেশ করলে আমি মৃত্যুদণ্ড কার্যকর করার আগেই জিজ্ঞাসা করি sshবা git। আমি যখন আপত্তিজনক মেশিনে লগইন করি তখন প্রম্পটটি ফিরে আসার জন্য gist.github.com/942082 দেখুন ।
ট্রেফিনন

@ ট্রাফিনন: আমি কীভাবে সাথে gitইন্টারঅ্যাক্ট করি ঠিক জানি না sshএবং আমি এমন ব্যবহার করি না gitযাতে চেষ্টা করতে না পারি try আমার পূর্ববর্তী ব্যাখ্যাটি পরিষ্কার ছিল তা নিশ্চিত হওয়ার জন্য আমি উপরে উল্লিখিত ফাংশনটি ~/.bash_profileঅন্তর্ভুক্ত করার জন্য আমি সংশোধন git()করেছি। এছাড়াও, আপনি যে আউটপুটটি দেখান সেগুলি থেকে আপনি সার্ভার মেশিনটি সংশোধন করেছেন বলে মনে হয়, তবে আমার সমস্ত পরামর্শগুলি কেবল ক্লায়েন্ট মেশিনে পরিচালিত হয়েছিল।
এনজোটিব

@ এঞ্জোটিব এটি সঠিক। আমি যে সার্ভারটিতে লগ ইন করেছিলাম তা আমার ক্লায়েন্ট হয়ে যায় যখন আমি gitএখান থেকে কেন্দ্রীয় ফোরজি / সংগ্রহস্থলের দিকে ধাক্কা দেই যাতে ফাইলটি সঠিক জায়গায় থাকে। আমি মনে করি আপনি আমাকে আমার ইঙ্গিতটি দিয়েছেন / আমার চিন্তাভাবনা জোগ করেছেন। আমার কাছে একটি বিশেষ বাশ প্রম্পট রয়েছে যা এর গিট শাখাটি প্রদর্শন করে pwd। বাশ লগইনে পাসওয়ার্ডের অনুরোধটি ট্রিগার করছে এমন আমি বাজি ধরেছি কারণ এটি ব্যাশ প্রম্পটটি রেন্ডার করার আগে স্ট্যাটটি গিট করার চেষ্টা করে!
ট্রেফিনন

2

আমি সম্প্রতি এসএস-পরিচয় ব্যবহার শুরু করেছি:

https://github.com/ccontavalli/ssh-ident

আপনাকে যা করতে হবে তা হ'ল কিছু যুক্ত করুন:

alias ssh="/path/to/ssh-ident"

আপনার .bashrc। বিকল্পভাবে, আপনি ln -s /path/to/ssh-ident ~/bin/sshবা আপনার पथপথের আগে /binএবং এর আগে অন্য কোনও ডিরেক্টরি করতে পারেন /usr/bin


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