Ssh [বদ্ধ] মাধ্যমে পাসওয়ার্ড সহ কোনও ব্যবহারকারী তৈরি করতে অক্ষম


13

আমি এসএসএসের মাধ্যমে পাসওয়ার্ড সহ একটি ব্যবহারকারী তৈরি করার চেষ্টা করেছি (মূল অনুমতি সহ):

ssh root@123.45.6.7 useradd -p $(openssl passwd -1 1234) newuser

এটি করে, আমি সফলভাবে নামের একটি অ্যাকাউন্ট তৈরি করতে পারি newuser, তবে আমি প্রত্যাশিত পাসওয়ার্ডের সাথে লগইন করতে পারি না (যা এটি 1234)

যদি আমি ডাবল উদ্ধৃতি যোগ করি তবে এতে কোনও তফাত হবে না:

ssh root@123.45.6.7 "useradd -p $(openssl passwd -1 1234) newuser"

এবং তখন আমি ভাবছিলাম যে আমি কি হ্যাশ পাসওয়ার্ড তৈরি করতে পারি এবং স্থানীয়ভাবে এটিকে ভেরিয়েবল হিসাবে সংরক্ষণ করতে পারি, তবে এখনও ভাগ্য নেই।

password=$(openssl passwd -1 1234)
ssh root@123.45.6.7 "useradd -p $password newuser"

আমি কি কিছু মিস করছি? আগাম ধন্যবাদ!


কমান্ড-লাইনে পাসওয়ার্ডগুলি পাস করা একটি খারাপ ধারণা কারণ অন্য ব্যবহারকারীরা কমান্ড-লাইন আর্গুমেন্ট দেখতে পাবে। তার জন্য হিমাইলের উত্তর দেখুন। এর বাইরে, এটি একটি এক্সওয়াই সমস্যার মতো শোনাচ্ছে । আপনি আসলে কী অর্জন করার চেষ্টা করছেন? অ্যাকাউন্টের পাসওয়ার্ডের এমন কী বিন্দু যা কেউ জানে না (বা এটি জানা উচিত)? যদি পয়েন্টটি এমন কোনও অ্যাকাউন্ট তৈরি করতে হয় যা লগইনগুলি পাসওয়ার্ডের মাধ্যমে গ্রহণ না করে তবে কোনও পাসওয়ার্ড সেট করে না যা পাসওয়ার্ড ভিত্তিক লগ-ইনকে উবুন্টুর ডিফল্ট নীতি হিসাবে অক্ষম করে।
ডেভিড ফোস্টার 16

উত্তর:


22

এটি একটি ক্লাসিক উদ্ধৃতি ইস্যু।

সমস্যা: কোনও উদ্ধৃতি বা ডাবল উদ্ধৃতি না দিয়ে কমান্ড সাবস্টিটিউশন ( $()) এবং ভেরিয়েবল এক্সপেনশন ( $হ্যাশ পাসওয়ার্ডের opensslযেগুলি ফেরত পাঠানো হয়েছে এটি ভেরিয়েবল সূচক হিসাবে বিবেচিত হচ্ছে) দূরবর্তী শেলটিতে নয় স্থানীয় পরিবেশে করা হচ্ছে।

সমাধান: কমান্ড প্রতিস্থাপন এবং স্থানীয় পরিবেশে পরিবর্তনশীল প্রসারণ রোধ করতে স্থানীয় শেলটিতে useraddব্যবহৃত কমান্ডের চারপাশে একক উদ্ধৃতি ব্যবহার sshকরুন, দূরবর্তী অ-লগইন, অ-ইন্টারেক্টিভ শেলটিতে সম্প্রসারণটি স্থান পেতে দিন:

ssh root@123.45.6.7 'useradd -p "$(openssl passwd -1 1234)" newuser'

উদ্ধৃতিগুলি নোট করুন।

নিরাপত্তা বিষয়ক:

  • এসএসএইচ rootলগইন অক্ষম করা উচিত, আপনার যদি এটি অবশ্যই সক্ষম করে থাকে তবে কেবল কী-ভিত্তিক প্রমাণীকরণের অনুমতি দেওয়া উচিত

  • এমডি 5 ইতিমধ্যে নষ্ট হয়ে গেছে, এবং লবণ ছাড়াই আপনাকে সাধারণ রেইনবো টেবিল আক্রমণ করা হয় (এমনকি জোরপূর্বক / অভিধানের আক্রমণ প্রয়োজন হয় না); openssl passwdযদিও একটি এলোমেলো লবণ উত্পাদন করে। যাইহোক, আপনার সত্যই লবণের সাথে SHA-2 ব্যবহার করা উচিত

  • কমান্ডগুলিতে আর্গুমেন্ট হিসাবে পাসওয়ার্ডগুলি (রিমোট) সিস্টেমে অন্যান্য প্রক্রিয়াগুলিতে দৃশ্যমান হতে পারে; এটি আপনার procfsমাউন্ট ( কীভাবে দেখুন hidepid) তার উপর নির্ভর করে এবং যদি কমান্ডটি নিজেই আবার লিখতে থাকে (এটি সম্ভবত এই ক্ষেত্রে তা নয়)


1
মোহন মত কাজ করে, এবং অতিরিক্ত তথ্যের জন্য আপনাকে ধন্যবাদ!
amigcamel

1
md5crypt পাসওয়ার্ড হ্যাশের একটি লবণ রয়েছে ...
ইলক্কাচু

@ilkkachu MD5 একটি নিরাপদ হ্যাশ নয়। আপনি যদি আগ্রহী হন তবে তথ্য সুরক্ষা অনুসন্ধান করুন । সত্যই আপনার একটি সংশ্লেষিত অ্যালগরিদম বা ক্রিপ্টোগ্রাফিক লাইব্রেরি ব্যবহার করা উচিত তবে SHA-2 MD5 এর চেয়ে উল্লেখযোগ্যভাবে ভাল।
wizzwizz4

1
@ wizzwizz4 হ্যাঁ, এটি সুপরিচিত, এই উত্তরের তথ্যটি ভুল বলে সত্যটি পরিবর্তন করে না। :)
হাবস

2
@ wizzwizz4, পাসওয়ার্ড হ্যাশ ( md5crypt ) crypt(3)লিনাক্স দ্বারা সমর্থিত এবং $1$সনাক্তকারী দিয়ে চিহ্নিত করা যেমন প্লেইন MD5 হ্যাশ অ্যালগরিদমের মতো নয়, ঠিক তেমনভাবে$5$ এবং $6$ পাসওয়ার্ডের হ্যাশগুলি সরল SHA-256 এবং SHA-512 নয় either । এমডি 5 ভিত্তিক পদ্ধতিতে একটি নির্দিষ্ট সংখ্যক পুনরাবৃত্তি রয়েছে যা এটির সাথে সবচেয়ে বড় সমস্যা।
ilkkachu

7

যেমন @ হাইমাইল উল্লেখ করেছে, এমডি 5 পাসওয়ার্ড হ্যাশ অ্যালগরিদম বয়স্ক, এবং বর্তমান সিস্টেমগুলি নতুন SHA-2 ভিত্তিক পাসওয়ার্ড হ্যাশগুলিতে রয়েছে, যার স্বনির্ধারিত কাজের ফ্যাক্টর রয়েছে। তবে ওপেনএসএসএল কমান্ড লাইন সরঞ্জামটি সেগুলি সমর্থন করে বলে মনে হচ্ছে না।

chpasswdউপযোগ , কিন্তু, আপনি সিস্টেম সেটিংস অনুযায়ী একটি ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করার অনুমতি দেবে।

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

echo "newuser:newpass" | ssh root@123.45.6.7 'useradd newuser; chpasswd' 

chpasswdকমান্ড লাইন নয়, স্টিডিনের কাছ থেকে ব্যবহারকারীর নাম এবং পাসওয়ার্ড নেয়। কমান্ড লাইন আর্গুমেন্টগুলি সিস্টেমে অন্য সমস্ত প্রক্রিয়াগুলির জন্য দৃশ্যমান হওয়ার কারণে এটি আসলে একটি সুবিধা so সুতরাং যদি openssl passwdরিমোটে চালানো হয় তবে পাসওয়ার্ডটি সিস্টেমে সমস্ত প্রক্রিয়াতে মুহূর্তের জন্য দৃশ্যমান হবে।

সিস্টেম crypt(3)ফাংশন দ্বারা পরিচিত পাসওয়ার্ড হ্যাশগুলি উত্পন্ন করার জন্য একটি প্রস্তুত কমান্ড লাইন ইউটিলিটি আছে কিনা তা আমি নিশ্চিত নই । পার্লের cryptফাংশনটি অন্তর্নির্মিত রয়েছে, তবে এখনও একটি সঠিক লবণ তৈরি করা দরকার।

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