SSH 호스트 키를 변경하는 방법?


23

서버를 복제하여 동일한 RSA 키 지문을 사용했습니다.

에 정의 된 것 같습니다 /etc/ssh/ssh_host_rsa_key.pub.

그것을 바꾸는 올바른 방법은 무엇입니까?

감사.

답변:


23

또는 키를 제거하고

ssh-keygen -A

설명:

-A: 호스트 키가 존재하지 않는 각 키 유형 (rsa1, rsa, dsa, ecdsa 및 ed25519)에 대해 기본 키 파일 경로, 빈 비밀번호 문구, 키 유형의 기본 비트 및 기본값으로 호스트 키를 생성하십시오. 논평. 이것은 / etc / rc에서 새로운 호스트 키를 생성하는 데 사용됩니다.


OP의 태그는 데비안을 지정하지만 플랫폼에 따라 다르지 않으므로이 답변이 더 나은 솔루션 인 것 같습니다.
mc0e

이전 버전에서는 작동하지 않는 것 외에는 흠. 예 : OpenSSH_5.5p1
mc0e

1
(로부터 정보 manpagez.com/man/1/ssh-keygen ) ssh-keygen -A다음을 수행합니다 "호스트 키가 존재하지 않은 키 유형 (RSA1, RSA, DSA, ECDSA 및 ed25519)의 각각에 대해 호스트를 생성 기본 키 파일 경로가있는 키, 빈 암호 문구, 키 유형의 기본 비트 및 기본 주석. / etc / rc에서 새 호스트 키를 생성하는 데 사용됩니다. "
Rabarberski 2019

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
이 질문을 개선하는 한 가지 방법은 비트 수를 늘리는 방법을 추가하는 것입니다. 즉ssh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
Whitecat

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
Pascal Polleunus

1
과연. RHEL 기반 배포에서만 작동합니다. 죄송합니다
Heis Spiter

좋은 조언, 감사합니다. CentOS 설치에서 나를 위해 일했습니다.
George Gaál

Fedora에서 확실히 작동
David Tonhofer

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 실제로 그렇습니다. 순서대로 세 번째 답변 : "-DSA 또는 ECDSA를 사용하지 마십시오.-Ed25519는 수학적으로 가장 강력하고 (가장 빠르지 만) 아직 널리 지원되지 않습니다. 보너스로 개인 키의 암호화 (암호 보호)가 더 강력합니다. 다른 키 유형보다 기본적으로-Ed25519를 사용할 수없는 경우 RSA가 가장 좋습니다. "
David Tonhofer

아 맞아. 나는 지금 본다.
토드 월튼
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.