Bir SSH ana bilgisayar anahtarını nasıl değiştirebilirim?


23

Bir sunucuyu klonladım ve böylece aynı RSA anahtar parmak izine sahipler.

İçinde tanımlanmış gibi görünüyor /etc/ssh/ssh_host_rsa_key.pub.

Bunu değiştirmenin doğru yolu nedir?

Teşekkürler.

Yanıtlar:


23

Veya tuşları kaldırın ve

ssh-keygen -A

Açıklama:

-A: Ana bilgisayar anahtarlarının bulunmadığı anahtar türlerinin (rsa1, rsa, dsa, ecdsa ve ed25519) her biri için, ana anahtarlar için varsayılan anahtar dosya yolunu, boş bir parola, anahtar türünün varsayılan bitleri ve varsayılan yorum Yap. Bu, / etc / rc tarafından yeni ana bilgisayar anahtarları oluşturmak için kullanılır.


OP'nin etiketleri debian'ı belirtiyor, ancak platforma özgü olmadığından, bu cevap daha iyi bir çözüm gibi görünüyor.
mc0e

Hmm, eski versiyonlarda işe yaramazsa dışında. Örneğin, OpenSSH_5.5p1
mc0e

1
Bilgileriniz için ( manpagez.com/man/1/ssh-keygen adresinden ) şunlarıssh-keygen -A yapar: "Ana bilgisayar anahtarlarının bulunmadığı anahtar türlerinin her biri için (rsa1, rsa, dsa, ecdsa ve ed25519), ana bilgisayarı oluşturun. varsayılan anahtar dosya yoluna sahip anahtarlar, boş bir parola, anahtar türü için varsayılan bitler ve varsayılan yorum. Bu, / etc / rc tarafından yeni ana bilgisayar anahtarları oluşturmak için kullanılır. "
Rabarberski

19

OpenSSH Ana Bilgisayar Anahtarlarını yeniden oluşturmak için bu adımları izleyin

  1. Eski ssh ana bilgisayar anahtarlarını silin: rm /etc/ssh/ssh_host_*
  2. OpenSSH Sunucusunu Yeniden Yapılandır: dpkg-reconfigure openssh-server
  3. Tüm ssh istemcisi ~/.ssh/known_hostsdosyalarını güncelle

Referans


8

Bunu yapmanın genel bir yöntemi için:

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 sürümünüzün desteklediği anahtarlara göre karıştırın ve eşleştirin.


1
Bence bu soruyu geliştirmenin bir yolu bit sayısını artırmak için bir yol eklemek. iessh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
Whitecat

0

Bunları silin ve SSHd servisini yeniden başlatın. Yenilenecekler.


1
Hayır, işe yaramadı. /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
Pascal Polleunus

1
Aslında. Sadece RHEL tabanlı dağıtımlarda çalışır. Üzgünüm
Heis Spiter

İyi tavsiye, teşekkürler. CentOS kurulumunda benim için çalıştı.
George Gaál

Kesinlikle Fedora'da çalışıyor
David Tonhofer

0

Script (sshd arka plan programının yeniden başlatılması durumunda tuşları otomatik olarak yeniden oluşturmaz)

#!/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

Yorumunuzdaki link ECDSA'nın kullanılmaması gerektiğini söylemez.
Todd Walton

@ToddWalton Aslında öyle. Sıradaki
David Tonhofer

Ah haklısın. Şimdi görüyorum
Todd Walton
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.