서버를 복제하여 동일한 RSA 키 지문을 사용했습니다.
에 정의 된 것 같습니다 /etc/ssh/ssh_host_rsa_key.pub
.
그것을 바꾸는 올바른 방법은 무엇입니까?
감사.
답변
또는 키를 제거하고
ssh-keygen -A
설명:
-A
: 호스트 키가 존재하지 않는 각 키 유형 (rsa1, rsa, dsa, ecdsa 및 ed25519)에 대해 기본 키 파일 경로, 빈 비밀번호 문구, 키 유형의 기본 비트 및 기본값으로 호스트 키를 생성하십시오. 논평. 이것은 / etc / rc에서 새로운 호스트 키를 생성하는 데 사용됩니다.
답변
다음 단계에 따라 OpenSSH 호스트 키를 재생성하십시오
- 이전 ssh 호스트 키를 삭제하십시오.
rm /etc/ssh/ssh_host_*
- OpenSSH 서버를 재구성하십시오.
dpkg-reconfigure openssh-server
- 모든 ssh 클라이언트
~/.ssh/known_hosts
파일 업데이트
답변
이를 수행하는 일반적인 방법의 경우 :
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 버전이 지원하는 키에 따라 믹스 앤 매치하십시오.
답변
그것들을 삭제하고 SSHd 서비스를 다시 시작하십시오. 그들은 재생성 될 것입니다.
답변
스크립트 (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