কিভাবে ssh এ কঠোর হোস্ট কী চেকিং অক্ষম করবেন?


223

আমি sshউবুন্টু 11.04 এর জন্য কঠোর হোস্ট কী চেকিং নিষ্ক্রিয় করতে চাই । এটা কিভাবে করতে হবে?


10
হাই কার্থিক ৮87, আমি আশা করি আপনি যে পরিবর্তনটি করেছেন তার সুরক্ষা সম্পর্কিত প্রভাবগুলি বুঝতে পেরেছেন;)
প্যান্থার

1
তবে এটি লক্ষ করা উচিত, আপনি জানতে চান যে কোনও হোস্ট কী পরিবর্তন হয়েছে । এটি একটি বড় লাল পতাকা যা কেউ হোস্টকে ঠাট্টা করে। সুতরাং ব্যবহারকারী জ্ঞাতহোস্টফিল / দেব / নাল একটি সত্যই খারাপ ধারণা।

4
আপনি জানেন যে এসএসএইচ কেবলমাত্র দূরবর্তী সংযোগের জন্যই ব্যবহৃত হয় না। আমি যে সমস্ত হোস্টের সাথে সংযোগ দিচ্ছি সেগুলি আমার টেবিলের উপরে .েকে গেছে এবং একই আইপি ভাগ করে নেবে, তাই আমার কাছে সর্বদা নতুন হোস্ট সতর্কতা থাকে।
বড়ফু আলবিনো

আপনি যদি কেবল কোনও নির্দিষ্ট হোস্টের জন্য বার্তাটি সরাতে চান তবে সংশ্লিষ্ট লাইনটি। / .Ssh / জ্ঞাত_হোস্টগুলি মুছুন।
stackexchanger

2
আপনার যদি কেবল ত্রুটি ছাড়াই ওয়ান-টাইম সংযোগ করার দরকার হয়:ssh -o UserKnownHostsFile=/dev/null
ওডিনহো - ভেলমন্ট

উত্তর:


227

আপনার ~/.ssh/config(যদি এই ফাইলটি বিদ্যমান না থাকে তবে কেবল এটি তৈরি করুন):

Host *
    StrictHostKeyChecking no

এটি আপনার সাথে সংযুক্ত সমস্ত হোস্টের জন্য এটি বন্ধ করে দেবে। আপনি *যদি কিছু হোস্টের জন্য কেবল এটি প্রয়োগ করতে চান তবে আপনি হোস্টনামের প্যাটার্নটি সাথে প্রতিস্থাপন করতে পারেন।

ফাইলের অনুমতিগুলি কেবল নিজের অ্যাক্সেসকে সীমাবদ্ধ করে রাখুন তা নিশ্চিত করুন:

sudo chmod 400 ~/.ssh/config

1
configআমার হোম ডিরেক্টরিতে কোনও ফাইলের নাম নেই ।
karthick87

4
একটি করুন - ফাইলটির সম্পূর্ণ সামগ্রী আমার উপরের উদ্ধৃতিতে রয়েছে। এটি .sshআপনার হোমডিরের উপ-ডিরেক্টরিতেও নোট করুন ।
সিসিয়াম

ইন্ডেন্টেশন প্রয়োজনীয়? আমার এন্ট্রিগুলি খালি লাইনের দ্বারা বিভক্ত ব্লকের মতো দেখায়।
অ্যান্ডি গিগা

4
এটি অনেক ক্ষেত্রে ssh -o UserKnownHostsFile=/dev/null
বুদ্ধিমানের কাজ

1
mkdir -p ~ / .ssh && এর প্রতিধ্বনি "হোস্ট *"> ~ / .ssh / কনফিগারেশন && প্রতিধ্বনি "স্ট্রাইকহস্টকি চেকিং নেই" >> ~ / .ssh / config
147.3k

189

~/.ssh/configসমস্ত হোস্ট * এর জন্য আপনার ফাইলে এটি যুক্ত করার পরিবর্তে কোনও নির্দিষ্ট হোস্টকে নির্দিষ্ট করা নিরাপদ।

আপনি এর মতো কমান্ড-লাইনে একটি প্যারামিটারও পাস করতে পারেন:

ssh -o StrictHostKeyChecking=no yourHardenedHost.com

মনে রাখবেন যে আপনার সাধারণত হোস্ট প্রতি একবার এটি করা প্রয়োজন কারণ এটি প্রথমবার বলেছে:Warning: Permanently added 'frxxx.blaps.net,10.11.12.13' (RSA) to the list of known hosts.
মার্কহু

24
যে কাজ করবে না। এটি ssh -o UserKnownHostsFile=/dev/nullপরিবর্তে হওয়া উচিত ।
qwertzguy

1
@ কিওয়ার্টজগুই এটি কাজ করে। আপনার বিকল্পটি এটি তৈরি করবে যাতে প্রতিটি সময় হোস্ট কী হারিয়ে যায় যা দরকারী এবং আরও সুরক্ষিত, তবে প্রশ্নটি যা চেয়েছিল তা নয়।
জন বেন্টলে

@ কিওয়ার্টজগুয়ি আপনি কি উত্তর হিসাবে এটি যুক্ত করতে পারেন, আপনার তাত্ক্ষণিকভাবে চটজলদি'র জন্য সেরা "" আমি কী করছি আমি জানি কেবল সংযুক্ত "? আপনার উত্তর নিনজা চুরি করতে চান না।
ওডিনহো - ভেলমন্ট

@ odinho-velmont সম্পন্ন
qwertzguy

106

আপনার ssh কনফিগারেশনে সেটিংটি উল্লেখ করা মূল্যবান:

StrictHostKeyChecking no

এর অর্থ হোস্টকিগুলি এখনও। এসএসএইচ / জ্ঞাত_হোস্টগুলিতে যুক্ত করা হয়েছে - আপনি তাদের উপর আস্থা রেখেছিলেন কিনা সে সম্পর্কে আপনাকে কেবল জিজ্ঞাসা করা হবে না, তবে হোস্টদের পরিবর্তন করা উচিত আমি বাজি রাখতে রাজি আছি আপনি এটি সম্পর্কে বড় সতর্কতা পাবেন। আপনি অন্য একটি প্যারামিটার যুক্ত করে এই সমস্যাটি নিয়ে কাজ করতে পারেন:

UserKnownHostsFile /dev/null

এটি এই সমস্ত "সদ্য আবিষ্কৃত" হোস্টগুলি ট্র্যাসবিনে যুক্ত করবে। হোস্ট কী পরিবর্তন হলে কোনও ঝামেলা নেই।

আমি যে hostkeys এই সতর্কবার্তা circumventing সুস্পষ্ট নিরাপত্তা গার্গল হয়েছে উল্লেখ ফাঁকিবাজ হবে না - আপনি সতর্কতা অবলম্বন হল আপনি এখনই কারণে & যে করছেন হওয়া উচিত কি সংযোগ করছেন তাদের জন্য আসলে হয় কি আপনি প্রয়োজন এবং না সংযোগ চাওয়ার কথা বলছেন একটি দূষিত হোস্ট, যেহেতু এই মুহুর্তে আপনি সমাধান হিসাবে সুরক্ষার সুরক্ষার একটি বড় অংশটি সরিয়ে দিয়েছেন।

উদাহরণস্বরূপ, আপনি যদি কমান্ডলাইনটি দিয়ে চেষ্টা করে সেট করে রাখেন, সম্পূর্ণ কমান্ডটি হ'ল:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host

যদিও এটি নির্বাক হবে - উপরোক্ত যে ssh কনফিগারেশন ফাইলগুলির জন্য উপরের কার্যকারী উদাহরণগুলি সমস্ত ক্ষেত্রে আরও বোধগম্য হতে পারে।


1
আপনি সঠিক, আপনি বড় সতর্কতাটি পাবেন
ফ্রিডম_বেন 20'14

1
আমি মনে করি এটিই সঠিক উত্তর। এটি একটি ব্যক্তিগত স্থানীয় নেটওয়ার্কে হোস্টগুলির সাথে সংযোগ স্থাপনের জন্য ভাল কাজ করে।
স্টিভ ডেভিস

4
একটি উপনাম রাখা সুবিধাজনক হতে পারে ssh -o StrictHostKeyChecking=no -o UserKnownHostFiles=/dev/null user@host। আমার ক্ষেত্রে আমি isshহোস্টগুলির সাথে সংযোগ করতে ব্যবহার করি যেখানে আমি হোস্ট কী পরিবর্তনগুলি জানি।
ecerulm

1
@ এসারুলাম - কেবল একটি ছোট টাইপো: এটি UserKnownHostsFileনয় UserKnownHostFiles
ধূসর প্যান্থার

20

অবগতির জন্য। আমি cssh ব্যবহার করার সময় হোস্ট চেকিং অক্ষম করতে পছন্দ করি।

alias cssh='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'

csshবা ssh?
কেনারব

হতে পারে তিনি cssh.sourceforge.net
মার্কহু

আমি কি ভুল করছি, নাকি দ্বিতীয়টি -oঅপ্রয়োজনীয়?
ইয়্যাকার্ট

1
alias relay='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 11086695@172.26.19.19 -p 2222'আমার জন্য কাজ
arganzheng

9

আপনি যদি এক সময়ের ভিত্তিতে অক্ষম করতে চান তবে:

ssh -o UserKnownHostsFile=/dev/null

হোস্ট কী পরিবর্তন হলে এটিও কাজ করবে এবং অতিরিক্ত সুরক্ষার জন্য বিশ্বস্ত হিসাবে কীটি সংরক্ষণ না করা নিশ্চিত করবে।


6

যা মনে হচ্ছে তা থেকে ,

NoHostAuthenticationForLocalhost yes

আপনার জন্য যথেষ্ট ভাল হতে পারে । এবং আপনি এখনও সুরক্ষার সেই দর্শন বজায় রাখতে সক্ষম হবেন।


2

https://askubuntu.com/a/87452/129227 কনফিগার ফাইল পরিবর্তন করতে পরামর্শ দেয় যা সাহায্য করে। তবে কোনও হোস্টের জন্য জিনিস খোলার পরিবর্তে আমি চেয়েছিলাম যে এটি প্রতি হোস্টের জন্য করা হোক। নীচের স্ক্রিপ্টটি প্রক্রিয়াটি স্বয়ংক্রিয় করতে সহায়তা করে:

উদাহরণ কল

./sshcheck somedomain site1 সাইট2 সাইট3

sshcheck স্ক্রিপ্ট

#!/bin/bash
# WF 2017-08-25
# check ssh access to bitplan servers

#ansi colors
#http://www.csc.uvic.ca/~sae/seng265/fall04/tips/s265s047-tips/bash-using-colors.html
blue='\033[0;34m'  
red='\033[0;31m'  
green='\033[0;32m' # '\e[1;32m' is too bright for white bg.
endColor='\033[0m'

#
# a colored message 
#   params:
#     1: l_color - the color of the message
#     2: l_msg - the message to display
#
color_msg() {
  local l_color="$1"
  local l_msg="$2"
  echo -e "${l_color}$l_msg${endColor}"
}

#
# error
#
#   show an error message and exit
#
#   params:
#     1: l_msg - the message to display
error() {
  local l_msg="$1"
  # use ansi red for error
  color_msg $red "Error: $l_msg" 1>&2
  exit 1
}

#
# show the usage
#
usage() {
  echo "usage: $0 domain sites"
  exit 1 
}

#
# check the given server
#
checkserver() {
  local l_server="$1"
  grep $l_server $sconfig > /dev/null
  if [ $? -eq 1 ]
  then
    color_msg $blue "adding $l_server to $sconfig"
    today=$(date "+%Y-%m-%d")
    echo "# added $today by $0"  >> $sconfig
    echo "Host $l_server" >> $sconfig
    echo "   StrictHostKeyChecking no" >> $sconfig
    echo "   userKnownHostsFile=/dev/null" >> $sconfig
    echo "" >> $sconfig
  else
    color_msg $green "$l_server found in $sconfig"
  fi
  ssh -q $l_server id > /dev/null
  if [ $? -eq 0 ]
  then
    color_msg $green "$l_server accessible via ssh"
  else
    color_msg $red "ssh to $l_server failed" 
    color_msg $blue "shall I ssh-copy-id credentials to $l_server?"
    read answer
    case $answer in
      y|yes) ssh-copy-id $l_server
    esac
  fi
}

#
# check all servers
#
checkservers() {
me=$(hostname -f)
for server in $(echo $* | sort)
do
  os=`uname`
  case $os in
   # Mac OS X
   Darwin*)
     pingoption=" -t1";;
    *) ;;
  esac

  pingresult=$(ping $pingoption -i0.2 -c1 $server)
  echo $pingresult | grep 100 > /dev/null
  if [ $? -eq 1 ]
  then 
    checkserver $server
    checkserver $server.$domain
  else
    color_msg $red "ping to $server failed"
  fi
done
}

#
# check configuration
#
checkconfig() {
#https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh
  if [ -f $sconfig ]
  then
    color_msg $green "$sconfig exists"
    ls -l $sconfig
  fi
}

sconfig=~/.ssh/config

case  $# in
  0) usage ;;
  1) usage ;;
  *) 
    domain=$1 
    shift 
    color_msg $blue "checking ssh configuration for domain $domain sites $*"
    checkconfig
    checkservers $* 
    ;;
esac
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.