SHA256 ssh ফিঙ্গারপ্রিন্ট ক্লায়েন্ট দ্বারা প্রদত্ত তবে সার্ভারের জন্য পরিচিত কেবল md5 ফিঙ্গারপ্রিন্ট


118

কোনও নতুন / অজানা সার্ভারের সাথে সংযোগ করার সময় (সাম্প্রতিক ওপেনএসএসএইচ সহ) উদাহরণস্বরূপ:

ssh example.com

আপনি নীচের মত ফিঙ্গারপ্রিন্ট পাবেন:

The authenticity of host 'example.org (192.0.2.42)' can't be established.
RSA key fingerprint is SHA256:7KMZvJiITZ+HbOyqjNPV5AeC5As2GSZES5baxy1NIe4.
Are you sure you want to continue connecting (yes/no)?

তবে, আঙুলের ছাপগুলি সাধারণত এই ফর্মটিতে সার্ভারের জন্য দেওয়া হয়:

f6:fc:1c:03:17:5f:67:4f:1f:0b:50:5a:9f:f9:30:e5

আমি কীভাবে সত্যতা পরীক্ষা করতে পারি (কোনও SHA256 ফিঙ্গারপ্রিন্ট সরবরাহ করার জন্য সার্ভার প্রশাসকদের বুগ না করা)?


উত্তর:


151

পূর্বে ফিঙ্গারপ্রিন্টটি হেক্সড এমডি 5 হ্যাশ হিসাবে দেওয়া হয়েছিল। ওপেনএসএসএইচ 6.8 দিয়ে শুরু করে ফিঙ্গারপ্রিন্টটি এখন বেস 64 SHA256 হিসাবে প্রদর্শিত হবে (ডিফল্টরূপে)। আপনি এগুলি সরাসরি তুলনা করতে পারবেন না।

তারা একটি নতুন কনফিগারেশন বিকল্প যুক্ত করেছে FingerprintHash। তুমি রাখতে পারো

FingerprintHash md5

আপনার ~/.ssh/configপুরানো ( কম সুরক্ষিত ) ডিফল্টটিতে ফিরে যেতে বা কেবলমাত্র একক ব্যবহারের জন্য এই বিকল্পটি ব্যবহার করুন:

ssh -o FingerprintHash=md5 example.org

যা হিসাবে আঙুলের ছাপ দিতে হবে

MD5:f6:fc:1c:03:17:5f:67:4f:1f:0b:50:5a:9f:f9:30:e5

আশাকরি সার্ভার প্রশাসকরা অদূর ভবিষ্যতে উভয় প্রকারের আঙ্গুলের ছাপ সরবরাহ করবেন।

সম্পাদনা করুন:

আর্চ লিনাক্স ফোরামে যেমন দেওয়া আছে , তৃতীয় বিকল্পটিও রয়েছে:

Host example.org
    FingerprintHash md5

সম্পাদনা করুন:

আপনি ওপেনএসএসএইচ কুকবুকে প্রদত্ত একটি সালিশী কী এর হ্যাশ তৈরি করতে পারেন :

কীটি পুনরুদ্ধার করুন:

  • সাথে কীটি ডাউনলোড করুন ssh-keyscan example.org > key.pub
  • বা: সার্ভারে কীগুলি সন্ধান করুন /etc/ssh

হ্যাশ তৈরি করুন:

  • আপনার কেবল একটি লাইন / টাইপ রয়েছে তা নিশ্চিত করুন, তাই হয় অন্য যে কোনওটি মুছুন key.pubবা রান করুনssh-keyscan -t rsa example.org > key.pub
  • ssh-keygen -l -f key.pub (ওপেনএসএসএইচ সংস্করণ অনুসারে ডিফল্ট হ্যাশ)
  • ssh-keygen -l -f key.pub -E md5 (বর্তমান ওপেনএসএইচ-তে এমডি 5)
  • awk '{print $2}' ssh_host_rsa_key.pub | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64 (পুরানো ওপেনএসএসএইচ-এ sha256)
  • ( awk '{print $3}'Ssh-keycan এর নতুন সংস্করণগুলির জন্য আপনাকে লাইনটি শুরু করতে হবে কারণ ফর্ম্যাটটি পরিবর্তিত হয়েছে)

4
আপনি কীভাবে জানতে পেরেছেন যে আমি যদি সেখানে অ্যাক্সেস পেয়ে থাকি তবে আমি কীভাবে সার্ভারে sha256 ফিঙ্গারপ্রিন্ট পেতে পারি? ssh-keygen -lf সার্ভারে কেবল আমাকে এমডি 5 মুদ্রণ দেয় এবং আমার জীবনের জন্য আমি এখন পর্যন্ত ম্যান পেজগুলিতে বা www এ
কীভাবে শ 256

6
আমি উত্তরের sha256sum ব্যবহার করে ওপেনএসএসএইচ কুকবুক থেকে একটি স্নিপড যুক্ত করেছি।
জনিজেডি

2
আপনাকে ধন্যবাদ, আপনি কেবলমাত্র এমন উত্তর দেবেন যার আসল মূল্য রয়েছে।
ফ্লোরিয়ান হিগল

1
দুর্ভাগ্যক্রমে আমি আপনার awk1-লাইনার ব্যবহার করার সময় একটি আলাদা SHA-256 হ্যাশ পেয়েছি (আমার ক্লায়েন্টের দেখানো হ্যাশের সাথে মেলে না)
জোনাথন ক্রস

2
sha256sum -b | awk '{print $1}' | xxd -r -popenssl sha256 -binaryভিএম ইনস্টল করা প্রয়োজন না করে প্রতিস্থাপন করা যেতে পারে । awk '{print $2}' ~/.ssh/id_rsa.pub | base64 -d | openssl sha256 -binary | base64
ফলাফলের কমান্ডলাইনটি হ'ল

27

সবেমাত্র একটি ছোট বাশ স্ক্রিপ্ট তৈরি করা হয়েছে যা সার্ভারে অনুমতি অনুসারে সমস্ত কী সিফারগুলির জন্য আঙুলের ছাপগুলি সহ টেবিল প্রিন্ট করবে (অনুযায়ী /etc/ssh/sshd_config) উভয় SSH-256এবং MD5আলগোতে। এখানে একটি উদাহরণ আউটপুট:

 +---------+---------+-----------------------------------------------------+
 | Cipher  | Algo    | Fingerprint                                         |
 +---------+---------+-----------------------------------------------------+
 | RSA     | MD5     | MD5:15:66:80:fd:79:d8:c0:92:e8:39:4a:bc:4e:c4:00:15 |
 | RSA     | SHA-256 | SHA256:G+rKuLGk+8Z1oxUV3cox0baNsH0qGQWm/saWPr4qZMM  |
 +---------+---------+-----------------------------------------------------+
 | ECDSA   | MD5     | MD5:f5:90:5c:03:2e:38:1b:c9:86:bd:86:47:5d:22:79:17 |
 | ECDSA   | SHA-256 | SHA256:GGmuOzsG4EGeRV9KD1WK7tRf3nIc40k/5jRgbTZDpTo  |
 +---------+---------+-----------------------------------------------------+
 | ED25519 | MD5     | MD5:d1:5a:04:56:37:f4:75:19:22:e6:e5:d7:41:fd:79:fa |
 | ED25519 | SHA-256 | SHA256:QVdqYeVzvsP4n5yjuN3D2fu8hDhskOxQCQAV5f9QK7w  |
 +---------+---------+-----------------------------------------------------+

 +---[RSA 2048]----+ +---[RSA 2048]----+ +---[ECDSA 256]---+ +---[ECDSA 256]---+ +--[ED25519 256]--+ +--[ED25519 256]--+
 |.oE.   +.++      | |        .o+=     | |      ... Eoo    | |  .. o.o..      .| |        ooo++o.+*| |   .o++o. +oo    |
 |  .   o +oo.     | |        .o= =    | |     +.=.=.o .   | | . .o *..      ..| |       . oo.+o.o=| |      ...o.+     |
 |   + . . o.=     | |       ... X +   | |    . X.o.*      | |o o  ++o      .. | |        . o. ...+| |       ..oo.o .  |
 |    = +  .+ o    | |      ..  = + o  | |     + = o o     | |.+  .o.o     .o  | |         +    ..o| |        =oo .+   |
 |   o o .S  .     | |     . .S  o o   | |    . = S   .    | |...  oo.S  .E* * | |        S      ..| |       .SO .  .  |
 |    +            | |    . E. =o..    | |     o           | | .. o.  . o *.O o| |              .  | |        o B .o.. |
 |   o             | | .o. *.o. *.     | |                 | |   ...   . o * * | |               . | |         E *..=.o|
 |    .            | | oo=...  +.      | |                 | |    +.      o + o| |                E| |          . +.+B+|
 |                 | |o+=.o....o+o     | |                 | |   .o+         . | |                 | |           o.ooOX|
 +------[MD5]------+ +----[SHA256]-----+ +------[MD5]------+ +----[SHA256]-----+ +------[MD5]------+ +----[SHA256]-----+

স্ক্রিপ্ট SSHনীচের সংস্করণ সহ সার্ভারগুলিতেও চলবে 6.8( -E md5বিকল্প যুক্ত হওয়ার আগে )।

সম্পাদনা করুন: এসএসএইচের আরও সাম্প্রতিক সংস্করণগুলির জন্য আপডেট হওয়া সংস্করণ যা এএসসিআইআই চিত্র সমর্থন সহ এখন ডিফল্ট সিফারগুলিকে স্যুইচ করেছে।

#!/bin/bash
# server_ssh_fingerprints
#
# Version 0.2
#
# 2016 Kepi <kepi@igloonet.cz
# MIT License
#
# Print fingerprint matrix for all allowed Host Keys
# with all allowed ciphers and MD5 and SHA-256 algos
#
# Changelog:
#
# 2018-03-11 (0.2):
# - Support for newer versions of OpenSSH
# - Added visual keys for all algos too - only in recent OpenSSH versions

# standard sshd config path
SSHD_CONFIG=/etc/ssh/sshd_config

# helper functions
function tablize {
    awk '{printf(" | %-7s | %-7s | %-51s |\n", $1, $2, $3)}'
}
LINE=" +---------+---------+-----------------------------------------------------+"

# header
echo "$LINE"
echo "Cipher" "Algo" "Fingerprint" | tablize
echo "$LINE"

declare -A ALGOS
declare -a ASCII

# fingerprints
while read -r host_key; do
    cipher=$(echo "$host_key" | sed -r 's/^.*ssh_host_([^_]+)_key\.pub$/\1/'| tr 'a-z' 'A-Z')
    if [[ -f "$host_key" ]]; then
        if ssh-keygen -E md5 -l -f "$host_key" &>/dev/null; then
        IFS=$'\n'

        for algo in md5 sha256; do
            n=0
            for line in $(ssh-keygen -E $algo -lv -f "$host_key"); do
                n=$(( n + 1))
                if [[ $n -eq 1 ]]; then
                    ALGOS[$algo]=$(echo "$line" | awk '{print $2}')
                else
                    ASCII[$n]="${ASCII[$n]} ${line}"
                fi
            done
        done
        else
            ALGOS[md5]=$(ssh-keygen -l -f "$host_key" | awk '{print $2}')
            ALGOS[sha256]=$(awk '{print $2}' "$host_key" | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64)
        fi

        echo "$cipher" MD5 "${ALGOS[md5]}" | tablize
        echo "$cipher" SHA-256 "${ALGOS[sha256]}" | tablize
        echo "$LINE"
    fi
 done < <(awk '/^HostKey/ {sub(/^HostKey\s+/,"");print $0".pub"};' $SSHD_CONFIG)

echo
for line in "${ASCII[@]}"; do
    echo "$line"
done

JonnyJDএর উত্তরের তথ্য ব্যবহার করে এটি কেবল সুন্দর মুদ্রণ । ধন্যবাদ।


1
আমি এটিকে আরও দৃust় এবং উন্নত কার্যকারিতাটি সামান্য করে তুলেছি; সংস্করণ ০.০ ( চেঞ্জলগ সহ) এখানে: github.com/unixnut/scriptts/blob/master/ssh_fprint এই লেখার জন্য ধন্যবাদ, এটি দুর্দান্ত!
অ্যালাস্টার ইরভাইন

6

এটি ssh- কীজেন (সংস্করণ 6.6 পরে সম্ভবত সম্ভবত 6.8 পরে) দেখা যাচ্ছে একটি -E md5বিকল্প আছে যা এটি এমডি 5 ফিঙ্গারপ্রিন্ট হিসাবে আঙুলের ছাপ মুদ্রণ করতে পারে। সুতরাং, আপনি যদি সার্ভারের সর্বজনীন কী ফাইলটি স্বাধীনভাবে ধরতে পারেন তবে আপনি এটিকে ফিড করতে ssh-keygen -E md5 -l -f ssh_host_rsa_key.pubএবং আপনার পরিচিত ফিঙ্গারপ্রিন্ট পেতে পারেন ।


2
এর সবগুলি ইতিমধ্যে পূর্বের উত্তরে ভাল ফর্ম্যাট হয়েছে।
জাকুজে

3

নিম্নলিখিত এক-লাইনার (কমপক্ষে) কাজ করে Ubuntu 16.04,18.04 / Centos >= 7

(সার্ভার দিয়ে পরীক্ষিত: openssh 3.9- openssh 7.4)

ssh-keygen -l -E md5 -f <(ssh-keyscan -t rsa 192.168.2.1) \
| awk '{print $2}' | cut -d":" -f 2-

আউটপুট:

# 192.168.2.1:22 SSH-2.0-OpenSSH_5.3
65:2c:c4:03:03:2f:6d:c0:c0:09:79:e7:33:c4:f1:78

1

টেবিলে এলোমেলো শিল্পকেও সংশোধন করার চেষ্টা করেছেন:

# standard sshd config path
SSHD_CONFIG=/etc/ssh/sshd_config

# helper functions
function tablize {
        awk '{printf("| %-7s | %-51s |\n", $1, $3)}'
}
LINE="+---------+-----------------------------------------------------+"

# header
echo $LINE
echo "Cipher" "Fingerprint" "Fingerprint" | tablize
echo $LINE

# fingerprints
for host_key in $(awk '/^HostKey/ {sub(/^HostKey\s+/,"");print $0".pub"};' $SSHD_CONFIG); do
        cipher=$(echo $host_key | sed -r 's/^.*ssh_host_([^_]+)_key\.pub$/\1/'| tr '[a-z]' '[A-Z]')
        if [[ -f "$host_key" ]]; then
                md5=$(ssh-keygen -l -f $host_key -E md5 | awk '{print $2}')
                sha256=$(ssh-keygen -l -f $host_key | awk '{print $2}')
                art_sha256=$(ssh-keygen -lv -f $host_key | grep -v -w "256 SHA256" | grep -v -w "1024 SHA256" | grep -v -w "2048 SHA256")
                art_md5=$(ssh-keygen -lv -f $host_key -E md5 | grep -v "256 MD5" | grep -v "1024 MD5" | grep -v "2048 MD5")

                echo $cipher MD5 $md5 | tablize
                echo $cipher SHA-256 $sha256 | tablize
                echo $art_sha256 | tablize
                echo $art_md5 | tablize
                echo $LINE
        fi
done

... তবে আমি আসলে প্রোগ্রামার নই এবং স্ক্রিপ্টটি প্রত্যাশার মতো কাজ করে না। কেউ যদি ঠিক করতে (এছাড়াও ক্লিনআপ) সহায়তা করতে পারে তবে প্রশংসা করবে। স্থানটি আরও দক্ষতার সাথে ব্যবহার করার জন্য পাশাপাশি শ্যা 256 এবং এমডি 5 র্যান্ডম আর্ট চিত্রগুলি পাশাপাশি থাকতে পারে nice আমি md5 এবং sha256 কমান্ডগুলি সংশোধন করেছি কারণ মূলগুলি আমার পক্ষে কার্যকর হয়নি (সম্ভবত খুব নতুন সিস্টেম) - কেবল sha256 শেষের দিকে "=" চিহ্ন সহ টেবিলটিতে ধরা পড়েছিল যা প্রকৃত আঙুলের ছাপের অংশ ছিল না এবং এটি মুছে ফেলতে পারে নি।

(দুঃখিত আমি সম্প্রতি নিবন্ধিত হওয়ায় মন্তব্য করতে পারিনি)


আপনার যদি নতুন প্রশ্ন থাকে তবে দয়া করে প্রশ্ন জিজ্ঞাসা বোতামটি ক্লিক করে এটি জিজ্ঞাসা করুন । যদি এই প্রসঙ্গে সরবরাহ করতে সহায়তা করে তবে এই প্রশ্নের একটি লিঙ্ক অন্তর্ভুক্ত করুন।
ডোনাল্ড হাঁস

ঠিক আছে - যেমনটি আপনি দেখুন - এটি কোনও নতুন প্রশ্ন নয় তবে প্রকৃতপক্ষে স্বীকার করা হচ্ছে যে প্রস্তাবিত লিপিটি প্রত্যাশার মতো কাজ করে নি এবং একটি নতুন এবং এখনও সম্পূর্ণ সংস্করণ প্রস্তাব করা হয়নি। আমি বিদ্যমান স্ক্রিপ্টটি সংশোধন করতে পারলাম এটি প্রত্যাশার মতো কাজ করে তবে আমি এলোমেলো আর্ট যুক্ত করার চেষ্টা করেছি এবং এই অংশটি আইডি সম্পূর্ণ নয়। প্রকৃতপক্ষে একটি প্রস্তাব রয়েছে কীভাবে নির্দিষ্ট পাবলিক কী এবং অফার করা কীটি তুলনা করা যায় তবে এই রূপটি এমআইটিএম-প্রুফ নয়: ssh-keycan -t ecdsa xxx.xxx.xxx.xxx | SSH-Keygen -lv -f - && SSH -X -o VisualHostKey = হ্যাঁ -i ~ / .ssh / কী user@xxx.xxx.xxx.xxx
zeroconf

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