এটি সুরক্ষা এবং সুবিধার মধ্যে বাণিজ্য-বন্ধের একটি সাধারণ উদাহরণ। ভাগ্যক্রমে অনেকগুলি বিকল্প রয়েছে। সর্বাধিক উপযুক্ত সমাধান ব্যবহারের পরিস্থিতি এবং সুরক্ষার পছন্দসই স্তরের উপর নির্ভর করে।
পাসফ্রেজ সহ ssh- কী, না ssh-agent
এখন যখন প্রমাণীকরণের জন্য কী ব্যবহার করা হবে তখন পাসফ্রেজটি প্রবেশ করতে হবে। সুরক্ষা দৃষ্টিকোণ থেকে এটি সর্বোত্তম বিকল্প, এটি সবচেয়ে খারাপ ব্যবহারের সুযোগ দেয়। এটি বারবার প্রবেশ করার বোঝা হ্রাস করার জন্য-অর্ড-অর্ডারে একটি দুর্বল পাসফ্রেজ বেছে নেওয়া হতে পারে।
পাসফ্রেজ সহ ssh- কী, সহ ssh-agent
নিম্নলিখিতটি যুক্ত করার ফলে লগইনে ~/.bash_profileস্বয়ংক্রিয়ভাবে ssh-agentssh-key (গুলি) আরম্ভ হবে এবং লোড হবে :
if [ -z "$SSH_AUTH_SOCK" ] ; then
eval `ssh-agent -s`
ssh-add
fi
এখন প্রতিটি লগইনে পাসফ্রেজ অবশ্যই প্রবেশ করানো উচিত। ব্যবহারের দৃষ্টিকোণ থেকে কিছুটা উন্নত হওয়ার পরে, এটির মধ্যে এমন একটি অসুবিধা রয়েছে যা ssh-agentলগইন সেশনের সময় কী ব্যবহার করা উচিত কিনা তা বিবেচনা না করে পাসফ্রেজের জন্য অনুরোধ জানানো হয়। প্রতিটি নতুন লগইন স্বতন্ত্র ssh-agentউদাহরণ তৈরি করে যা লগআউট করার পরেও মেমরিতে যুক্ত কীগুলি নিয়ে চলমান থাকে, স্পষ্টভাবে হত্যা না করা পর্যন্ত।
লগআউটে হত্যা করতে ssh_agent, নিম্নলিখিতগুলিতে যুক্ত করুন~/.bash_logout
if [ -n "$SSH_AUTH_SOCK" ] ; then
eval `/usr/bin/ssh-agent -k`
fi
বা নিম্নলিখিতগুলি ~/.bash_profile
trap 'test -n "$SSH_AUTH_SOCK" && eval `/usr/bin/ssh-agent -k`' 0
কলিন অ্যান্ডারসনের উত্তরেssh-agent যেমন ফাইল সিস্টেমে স্থির স্থানে এজেন্টের সাথে অবিরাম যোগাযোগ সকেট তৈরি করে একাধিক উদাহরণ তৈরি করা এড়ানো যায় । এটি একাধিক এজেন্ট উদাহরণস্বরূপ তৈরির উন্নতি, তবে স্পষ্টভাবে ডিক্রিপ্টেড কীটি হত্যা না করলে লগআউট করার পরেও স্মৃতিতে রয়ে যায়।
ডেস্কটপগুলিতে, ডেস্কটপ এনভায়রনমেন্টের সাথে সংযুক্ত এস-এস-এজেন্টস, যেমন জিনোম কেরিং এসএসএইচ এজেন্ট , আরও ভাল পদ্ধতির হতে পারে কারণ লগইন সেশনের সময় প্রথমবারের মতো এসএস-কি ব্যবহার করা হলে পাসফ্রেজের জন্য অনুরোধ করা যেতে পারে এবং অধিবেশন শেষে ডিক্রিপ্ট করা ব্যক্তিগত কী মেমরিতে রেখে দিন memory
পাসফ্রেজ সহ ssh- কী, সহ ssh-ident
ssh-identএমন একটি ইউটিলিটি যা ssh-agentআপনার পক্ষে পরিচালনা করতে পারে এবং প্রয়োজনীয় পরিচয় লোড করতে পারে । এটি প্রয়োজনীয় মাত্র একবারে কী যুক্ত করে, যতগুলি টার্মিনাল, এসএসএস বা লগইন সেশনগুলির অ্যাক্সেসের প্রয়োজন তা নির্বিশেষে ssh-agent। এটি হোস্টের সাথে সংযুক্ত হওয়ার উপর নির্ভর করে বা ডিরেক্টরি ssh থেকে আহবান করা হয়েছে তার উপর নির্ভর করে একটি পৃথক এজেন্ট এবং বিভিন্ন কীগুলির বিভিন্ন সেট যুক্ত এবং ব্যবহার করতে পারে। এটি বিভিন্ন হোস্টের সাথে এজেন্ট ফরওয়ার্ডিং ব্যবহার করার সময় কীগুলি বিচ্ছিন্ন করার অনুমতি দেয়। এটি গিটহাবের মতো সাইটে একাধিক অ্যাকাউন্ট ব্যবহার করার অনুমতি দেয়।
সক্ষম করতে ssh-ident, এটি ইনস্টল করুন এবং আপনার সাথে নিম্নলিখিত উপন্যাস যুক্ত করুন ~/bash_profile:
alias ssh='/path/to/ssh-ident'
পাসফ্রেজ সহ ssh- কী, সহ keychain
keychainএকটি ছোট্ট ইউটিলিটি যা ssh-agentআপনার পক্ষে পরিচালনা করে এবং ssh-agentলগইন সেশন শেষ হওয়ার পরে এটি চলমান রাখতে দেয় । পরবর্তী লগইনগুলিতে, keychainবিদ্যমান ssh-agentউদাহরণের সাথে সংযুক্ত হবে । অনুশীলনে, এর অর্থ হ'ল পুনরায় বুট করার পরে প্রথম লগইন করার সময় পাসফ্রেজটি প্রবেশ করতে হবে। পরবর্তী লগইনগুলিতে, বিদ্যমান ssh-agentউদাহরণ থেকে এনক্রিপ্ট করা কী ব্যবহার করা হয়। cronএটি পাসওয়ার্ডবিহীন এসএস-কী ছাড়াই চাকরিতে পাসওয়ার্ডহীন আরএসএ / ডিএসএ প্রমাণীকরণের অনুমতি দেওয়ার জন্য কার্যকর হতে পারে ।
সক্ষম করতে keychain, এটি ইনস্টল করুন এবং নিম্নলিখিতগুলির মতো কিছু যুক্ত করুন ~/.bash_profile:
eval `keychain --agents ssh --eval id_rsa`
সুরক্ষার দৃষ্টিকোণ থেকে ssh-identএবং নির্দিষ্ট সেশনের আজীবন সীমাবদ্ধ উদাহরণগুলির keychainচেয়ে খারাপ ssh-agent, তবে তারা উচ্চ স্তরের সুবিধার্থে প্রস্তাব দেয়। এর সুরক্ষা উন্নত করতে keychainকিছু লোক --clearতাদের ~/.bash_profileকীচেন অনুরোধে বিকল্প যুক্ত করে । এই পাসফ্রেজগুলি অবশ্যই উপরের মতো লগইনে পুনরায় প্রবেশ করাতে হবে cronতবে ব্যবহারকারীর লগ আউট হওয়ার পরেও চাকরিগুলি এনক্রিপ্ট করা কীগুলিতে অ্যাক্সেস পাবে। keychain উইকি পাতা আরো তথ্য এবং উদাহরণ রয়েছে।
পাসফ্রেজ ছাড়াই ssh- কী
সুরক্ষা দৃষ্টিকোণ থেকে, এটি সবচেয়ে খারাপ বিকল্প, যেহেতু প্রাইভেট কীটি সম্পূর্ণরূপে সুরক্ষিত না হলে যদি এটি উন্মুক্ত হয়। তবে এটি নিশ্চিত করার একমাত্র উপায় যে পুনরায় বুট করার পরে পাসফ্রেজটি পুনরায় প্রবেশের প্রয়োজন নেই।
স্ক্রিপ্ট থেকে পাসফ্রেজ সহssh-agent , পাসফ্রেজ সহ ssh- কী ssh-add
যদিও এটি ssh-addকোনও স্ক্রিপ্ট থেকে পাসফ্রেজটি পাস করার জন্য একটি সহজ ধারণা বলে মনে হতে পারে , যেমন এটি পাসফ্রেজটি পড়েনিecho "passphrase\n" | ssh-add বলে মনে হচ্ছে এটি এতটা সোজা নয়, তবে সরাসরি পড়ার জন্য খোলে ।ssh-add stdin/dev/tty
ইন্টারেক্টিভ অ্যাপ্লিকেশনগুলি স্বয়ংক্রিয় করার জন্য একটি সরঞ্জাম, এটির সাথে কাজ করা যেতে পারে expect। নীচে স্ক্রিপ্টের একটি উদাহরণ যা স্ক্রিপ্টে সঞ্চিত পাসফ্রেজ ব্যবহার করে একটি এসএস-কী যুক্ত করে:
#!/usr/bin/expect -f
spawn ssh-add /home/user/.ssh/id_rsa
expect "Enter passphrase for /home/user/.ssh/id_rsa:"
send "passphrase\n";
expect "Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)"
interact
নোট করুন যে যেমন পাসফ্রেজটি স্ক্রিপ্টের সরলরেখায় সুরক্ষিত দৃষ্টিকোণ থেকে সংরক্ষণ করা হয়, এটি পাসওয়ার্ডহীন এসএস-কী-এর চেয়ে কমই ভাল। যদি এই পদ্ধতির ব্যবহার করতে হয়, তবে এটি নিশ্চিত করা গুরুত্বপূর্ণ যে expectপাসফ্রেজযুক্ত স্ক্রিপ্টটিতে এটির জন্য উপযুক্ত অনুমতি সেট রয়েছে, এটি কেবল কী মালিকের দ্বারা পঠনযোগ্য, লিখনযোগ্য এবং চালনার যোগ্য হয়ে ওঠে।