SSH होस्ट कुंजी कैसे बदलें?


23

मैंने एक सर्वर को क्लोन किया और इसलिए उनके पास एक ही आरएसए कुंजी फिंगरप्रिंट है।

इसमें परिभाषित किया गया है /etc/ssh/ssh_host_rsa_key.pub

उसे बदलने का सही तरीका क्या है?

धन्यवाद।

जवाबों:


23

या, चाबियाँ निकालें और

ssh-keygen -A

स्पष्टीकरण:

-A: प्रत्येक कुंजी प्रकार (rsa1, rsa, dsa, ecdsa और ed25519) के लिए, जिसके लिए होस्ट कुंजी मौजूद नहीं है, डिफ़ॉल्ट कुंजी फ़ाइल पथ के साथ होस्ट कुंजी उत्पन्न करें, एक खाली पासफ़्रेज़, कुंजी प्रकार के लिए डिफ़ॉल्ट बिट्स, और डिफ़ॉल्ट टिप्पणी। इसका उपयोग नई होस्ट कुंजी उत्पन्न करने के लिए / etc / rc द्वारा किया जाता है।


ओपी के टैग डेबियन निर्दिष्ट करते हैं, लेकिन गैर-प्लेटफ़ॉर्म विशिष्ट होने के नाते, यह उत्तर बेहतर समाधान की तरह लगता है।
mc0e

हम्म, सिवाय इसके कि पुराने संस्करणों के लिए काम नहीं करता है। जैसे डेबियन निचोड़ पर विफल रहता है, जिसमें OpenSSH_5.5p1 है
mc0e

1
आपकी जानकारी के लिए ( manpagez.com/man/1/ssh-keygen से ) ssh-keygen -Aनिम्न कार्य करता है: "प्रत्येक कुंजी प्रकार (rsa1, rsa, dsa, ecdsa और ed25519) के लिए, जिसके लिए होस्ट कुंजी मौजूद नहीं है, मेजबान बनाएँ डिफ़ॉल्ट कुंजी फ़ाइल पथ के साथ कुंजी, एक खाली पासफ़्रेज़, कुंजी प्रकार के लिए डिफ़ॉल्ट बिट्स, और डिफ़ॉल्ट टिप्पणी। यह नई होस्ट कुंजी उत्पन्न करने के लिए / etc / rc द्वारा उपयोग किया जाता है। "
Rabarberski

19

ओपनएसएसएच होस्ट कीज को पुनर्जीवित करने के लिए इन चरणों का पालन करें

  1. पुरानी ssh होस्ट कुंजी हटाएँ: rm /etc/ssh/ssh_host_*
  2. OpenSSH सर्वर को फिर से कॉन्फ़िगर करें: dpkg-reconfigure openssh-server
  3. सभी ssh क्लाइंट ( ~/.ssh/known_hostsफाइलों ) को अपडेट करें

संदर्भ


8

ऐसा करने की एक सामान्य विधि के लिए:

ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key

ssh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key

ssh-keygen -q -N "" -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key

मिक्स और मैच के अनुसार OpenSSH का आपका संस्करण समर्थन करता है।


1
मुझे लगता है कि इस प्रश्न को सुधारने का एक तरीका बिट्स की संख्या बढ़ाने का तरीका जोड़ना होगा। अर्थात्ssh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
व्हिटेकैट

0

उन्हें हटाएं और SSHd सेवा को पुनरारंभ करें। उन्हें पुनर्जीवित किया जाएगा।


1
नहीं, यह काम नहीं करता है। /etc/init.d/ssh restart<newline> Could not load host key: /etc/ssh/ssh_host_rsa_key<newline> Could not load host key: /etc/ssh/ssh_host_dsa_key<newline> [....] Restarting OpenBSD Secure Shell server: sshdCould not load host key: /etc/ssh/ssh_host_rsa_key<newline> Could not load host key: /etc/ssh/ssh_host_dsa_key
पास्कल पोलीन्यूस

1
वास्तव में। केवल आरएचईएल आधारित डिस्ट्रिब्यूट्स पर काम करता है। क्षमा करें
Heis Spiter

अच्छी सलाह, धन्यवाद। इसने मेरे लिए CentOS इंस्टॉलेशन पर काम किया।
जॉर्ज गैल

निश्चित रूप से फेडोरा पर काम करता है
डेविड टोनहोफर

0

स्क्रिप्ट (मामले में sshd डेमॉन को फिर से शुरू करने से स्वचालित रूप से कुंजियों का पुनर्जनन नहीं होता है)

#!/bin/bash

# Regenerate SSHD key materials, restart sshd if "-r" passed on command line

set -o nounset

WHERE=/etc/ssh

# go to directory

pushd $WHERE >/dev/null

if [[ $? != 0 ]]; then
   echo "Could not cd to $WHERE -- exiting" >&2
   exit 1
fi

# create backup folder

NOW=`date '+%Y%m%d.%H%M%S'` # default NOW string
BAKDIR=bak_$NOW

mkdir $BAKDIR

if [[ $? != 0 ]]; then
   echo "Could not mkdir $BAKDIR -- exiting" >&2
   exit 1
fi

# move existing key material to backup folder

mv ssh_host_* $BAKDIR

if [[ $? != 0 ]]; then
   echo "Could not move old files to $BAKDIR -- exiting" >&2
   exit 1
fi

# generate new keys

ssh-keygen -A

if [[ $? != 0 ]]; then
   echo "Could not recreate keys -- exiting" >&2
   exit 1
fi

# ssh-keygen may create DSA keys but:
# "Never use DSA or ECDSA"
# http://security.stackexchange.com/questions/5096/rsa-vs-dsa-for-ssh-authentication-keys

/bin/rm -f *_dsa_key *_dsa_key.pub
/bin/rm -f *_ecdsa_key *_ecdsa_key.pub

# on Fedora, one has to tune permissions a bit

chmod 640 *_key
chgrp ssh_keys *_key

# make sure SELinux attributes are as they should be

restorecon -R $WHERE

# Done

echo "New key material"
ls -l *_key *_key.pub

# Do the risky thing

if [[ $1 == '-r' ]]; then
   echo "Restarting SSH daemon"
   systemctl restart sshd
fi

# go back to where you where

popd >/dev/null

आपकी टिप्पणी में लिंक यह नहीं कहता है कि ईसीडीएसए का उपयोग नहीं किया जाना चाहिए।
टॉड वाल्टन

@ToddWalton वास्तव में यह करता है। अनुक्रम में तीसरा उत्तर: "- कभी भी डीएसए या ईसीडीएसए का उपयोग न करें। - एड 25519 संभवतः सबसे मजबूत गणितीय रूप से (और सबसे तेज भी) है, लेकिन अभी तक व्यापक रूप से समर्थित नहीं है। बोनस के रूप में, इसमें निजी कुंजी का मजबूत एन्क्रिप्शन (पासवर्ड-सुरक्षा) है। अन्य प्रमुख प्रकारों की तुलना में डिफ़ॉल्ट रूप से - यदि आप Ed25519 का उपयोग नहीं कर सकते हैं तो RSA सबसे अच्छी शर्त है। "
डेविड टोनहोफर

आह, तुम सही हो। मुझे अब दिख रहा है।
टॉड वाल्टन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.