কিভাবে অনুমতি জিজ্ঞাসা ssh এড়ানোর?


57

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

সমস্যাটি হ'ল: প্রথম ব্যবহারে, আমরা অনুরোধ জানানো হয়

RSA key fingerprint is 96:a9:23:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f.
Are you sure you want to continue connecting (yes/no)? yes

এটি এড়ানোর কোনও উপায় আছে বা আমরা প্রতিটি সার্ভার থেকে ম্যানুয়ালি প্রতিটি সার্ভারে কমপক্ষে একবার সংযোগ স্থাপন করতে ডুম্মড হয়েছি?

উত্তর:


90

StrictHostKeyChecking noআপনার /etc/ssh/ssh_configফাইলে সেট করুন, যেখানে এটি সার্ভারে প্রতিটি ব্যবহারকারীর দ্বারা ব্যবহৃত বৈশ্বিক বিকল্প হবে। বা এটি আপনার ~/.ssh/configফাইলে সেট করুন, যেখানে এটি কেবলমাত্র বর্তমান ব্যবহারকারীর জন্যই ডিফল্ট। অথবা আপনি এটি কমান্ড লাইনে ব্যবহার করতে পারেন:

ssh -o StrictHostKeyChecking=no -l "$user" "$host"

এটি কীভাবে কাজ করে তার একটি ব্যাখ্যা এখানে man ssh_config (বা এটি আরও বর্তমান সংস্করণ দেখুন ):

StrictHostKeyChecking

      যদি এই পতাকাটি "হ্যাঁ" তে সেট করা থাকে তবে ssh কখনই $HOME/.ssh/known_hostsফাইলটিতে হোস্ট কীগুলি স্বয়ংক্রিয়ভাবে যুক্ত করবে না এবং হোস্ট কীগুলির পরিবর্তিত হোস্টগুলির সাথে সংযোগ করতে অস্বীকার করবে। এটি ট্রোজান ঘোড়ার আক্রমণগুলির বিরুদ্ধে সর্বাধিক সুরক্ষা সরবরাহ করে, তবে /etc/ssh/ssh_known_hostsফাইলটি খারাপভাবে রক্ষণাবেক্ষণ করা বা নতুন হোস্টের সাথে সংযোগগুলি প্রায়শই করা হলে বিরক্তিকর হতে পারে । এই বিকল্পটি ব্যবহারকারীকে ম্যানুয়ালি সমস্ত নতুন হোস্ট যুক্ত করতে বাধ্য করে। যদি এই পতাকাটি "না" তে সেট করা থাকে তবে sshব্যবহারকারী পরিচিত হোস্ট ফাইলগুলিতে স্বয়ংক্রিয়ভাবে নতুন হোস্ট কী যুক্ত করবে। এই ফ্ল্যাগ "জিজ্ঞাসা" হিসাবে সেট করা থাকে, নতুন হোস্ট কী ব্যবহারকারী নিশ্চিত হওয়ার পরে শুধুমাত্র ব্যবহারকারীর পরিচিত হোস্ট ফাইল যোগ করা হবে যে তারা কি সত্যিই অপরাধী করতে চান, এবং SSH হোস্ট যার হোস্ট কী পরিবর্তন হয়েছে সাথে সংযোগ স্থাপনের জন্য আপত্তি করবে । পরিচিত হোস্টের হোস্ট কীগুলি সমস্ত ক্ষেত্রে স্বয়ংক্রিয়ভাবে যাচাই করা হবে। যুক্তিটি অবশ্যই "হ্যাঁ", "না" বা "জিজ্ঞাসা" হতে হবে। ডিফল্ট হ'ল "জিজ্ঞাসা"।


1
+1, আমি আমার সার্ভারগুলির জন্য এটিও। এবং কেবল পরিষ্কার করার জন্যই, প্রশ্নের বার্তাটি সংযোগকারী ক্লায়েন্ট কম্পিউটারে ssh ক্লায়েন্টের কাছ থেকে আসে এবং সার্ভার থেকে আসে না।
প্যাটকোস সিসাবা

3
এই উত্তরটি তৈরির ক্ষেত্রে সুরক্ষা সমস্যার মতো মনে হচ্ছে।
সানস্পার্ক

25

ssh-keyscan - ssh সর্বজনীন কীগুলি সংগ্রহ করুন

আপনি যে হোস্টগুলির সাথে সংযোগ স্থাপন করবেন তার তালিকাটি যদি আপনি ইতিমধ্যে জানেন তবে আপনি কেবল জারি করতে পারেন:

ssh-keyscan host1 host2 host3 host4

আপনি -Hএখন থেকে এসএসএল ডিফল্টের মতো ফলাফল হ্যাশ করার বিকল্পটি দিতে পারেন

এছাড়াও আপনি দিতে পারেন -t keytypeকী টাইপটি হ'ল dsa, rsaবা ecdsaযদি আপনার পছন্দ হয় তবে কী ধরণের কীটি ডিফল্টর পরিবর্তে গ্রহণ করতে হবে।

একবার চালানোর পরে ssh-keyscanএটি আপনার জ্ঞাত-হোস্ট ফাইলটি পূর্ব-জনবহুল হয়ে যাবে এবং আপনাকে কোনও নতুন কী যুক্ত করার অনুমতি চেয়ে জিজ্ঞাসা করবে না।


1
আমি "প্রাক জনবহুল" মন্তব্যটি সম্পর্কে কিছুটা বিস্মিত হই ... ज्ञात_মোহরগুলি এটি চালানোর পরে তৈরি বা সংশোধিত হয়নি। আপনি বোঝাতে চাইছেন যে বিষয়বস্তু এটিকে পপুলেট করার জন্য ফাইলটিতে পাইপ করা যেতে পারে?
rschwieb

4
Techrepublic.com/article/… এর সাথে নিশ্চিত হওয়াssh-keyscan -H myhost >> ~/.ssh/known_hosts, বা সার্ভার- /etc/ssh/ssh_known_hosts
ওয়াইডের

12

আপনি প্রতিটি সার্ভারের পরিচিত_হোস্টগুলিতে ফিঙ্গারপ্রিন্ট যুক্ত করতে পারেন। একক ব্যবহারকারীর জন্য:

cat ~/.ssh/known_hosts
echo "$SERVER,$PORT ssh-rsa $SERVER_KEY_FINGERPRINT" >> ~/.ssh/known_hosts

3
হ্যাশিং চালু হওয়ার পরে এটি আর এটি করার সঠিক উপায় নয়।
Deim0s

10

হোস্ট উপেক্ষা করুন

হোস্টকিচেকিং উপেক্ষা করুন। এর জন্য আমি যেমন:

ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null user@example.net

হোস্ট যুক্ত করুন

.ssh/known_hostsআপনার প্রথম সংযোগের আগে হোস্টের / সার্ভারের আঙুলের ছাপ যুক্ত করুন। এটি নিরাপদ উপায়।


ওহে. ওরাকল ssh কমান্ড ইস্যু করে সুতরাং এটি কীভাবে এটি সম্পাদন করে তার উপর আমার কোনও নিয়ন্ত্রণ নেই।
নিকোলাস ডি ফন্টনেয়

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

(২) অবশ্যই, পরিচিত হোস্ট ফাইলে ফিঙ্গারপ্রিন্ট যুক্ত করা আদর্শ পন্থা - তবে এটি কীভাবে করে? (1) ব্যবহারকারী হিসাবে পরিচিত হোস্ট ফাইল সেট করা কেন উপকারী  /dev/null? ssh -oStrictHostKeyChecking=no user@example.netসার্ভারের ফিঙ্গারপ্রিন্টটি একবারে $HOME/.ssh/known_hostsফাইলে পাওয়ার জন্য কি আরও ভাল হবে না , সুতরাং পরবর্তী সংযোগগুলি নিশ্চিতকরণের অনুরোধ ছাড়াই এগিয়ে যাবে?
জি ম্যান

3

চেষ্টা করার আগে নিম্নলিখিত স্নিপেটটি কার্যকর করুন।

mkdir -p ~/.ssh     
echo "Host *" > ~/.ssh/config     
echo " StrictHostKeyChecking no" >> ~/.ssh/config

PS: কঠোরভাবে উত্পাদন সার্ভারের জন্য নয়, ম্যানইনমিটল থেকে সাবধান থাকুন


0

আমি টিম এর জবাব এক টাইপ জিনিসের জন্য পছন্দ করি তবে যাইহোক এটি যদি কোনও হোস্ট হয় আপনি নিয়মিতভাবে সংযোগ স্থাপনের উদ্দেশ্যে থাকেন তবে আমি আপনার। / .Ssh / কনফিগারেশনে একটি এন্ট্রি তৈরি করব (ফাইলটি উপস্থিত না থাকলে এটি তৈরি করুন)।

# this example shows wildcard for IP
# you can even use more than one wildcard 10.0.*.* for example
Host 192.168.56.*
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
# you can even alias it, which is really useful when scp'ing/rsyncing foo:/path/to/remote
Host foo
    HostName foo-long-192-10-135-55.hostname.not-going-to-remember.doh
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.