SSHホストキーを変更する方法


23

サーバーのクローンを作成したので、同じRSAキーフィンガープリントがあります。

で定義されているよう/etc/ssh/ssh_host_rsa_key.pubです。

それを変更する正しい方法は何ですか?

ありがとう。

回答:


23

または、キーを削除して

ssh-keygen -A

説明:

-A:ホストキーが存在しない各キータイプ(rsa1、rsa、dsa、ecdsa、およびed25519)について、デフォルトのキーファイルパス、空のパスフレーズ、キータイプのデフォルトビット、およびデフォルトでホストキーを生成しますコメント。これは、新しいホストキーを生成するために/ etc / rcによって使用されます。


OPのタグはdebianを指定しますが、プラットフォーム固有ではないため、この答えはより良い解決策のようです。
mc0e

うーん、古いバージョンでは動作しないようです。例えば、OpenSSH_5.5p1を持っているDebianのスクイズ、上の失敗
mc0e

1
manpagez.com/man/1/ssh-keygenからの)情報についてssh-keygen -Aは、次のことを行います。デフォルトのキーファイルパス、空のパスフレーズ、キータイプのデフォルトビット、およびデフォルトのコメントを含むキー。これは、新しいホストキーを生成するために/ etc / rcによって使用されます。
-Rabarberski

19

以下の手順に従って、OpenSSHホストキーを再生成します

  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
この問題を改善する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
確かに。RHELベースのディストリビューションでのみ機能します。申し訳ありませんが
ハイス・スピーター

良いアドバイス、ありがとう。CentOSのインストールでうまくいきました。
ジョージガール

間違いなくFedoraで動作します
デビッドトンホーファー

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

コメント内のリンクは、ECDSAを使用すべきでないとは言っていません。
トッドウォルトン

@ToddWalton実際にそうです。シーケンスの3番目の回答:「-DSAまたはECDSAを使用しないでください。-Ed25519はおそらく数学的には最強(かつ最速)ですが、まだ広くサポートされていません。おまけとして、秘密鍵の強力な暗号化(パスワード保護)デフォルトでは他のキータイプよりも優れています。-Ed25519を使用できない場合は、RSAが最適です。」
デビッドトンホーファー

ああ、あなたは正しい。今見えます。
トッドウォルトン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.