Tôi đã nhân bản một máy chủ và vì vậy chúng có cùng dấu vân tay khóa RSA.
Nó dường như được định nghĩa trong /etc/ssh/ssh_host_rsa_key.pub
.
Cách chính xác để thay đổi điều đó là gì?
Cảm ơn.
Tôi đã nhân bản một máy chủ và vì vậy chúng có cùng dấu vân tay khóa RSA.
Nó dường như được định nghĩa trong /etc/ssh/ssh_host_rsa_key.pub
.
Cách chính xác để thay đổi điều đó là gì?
Cảm ơn.
Câu trả lời:
Hoặc, loại bỏ các phím và
ssh-keygen -A
Giải trình:
-A
: Đối với mỗi loại khóa (rsa1, rsa, dsa, ecdsa và ed25519) mà khóa chủ không tồn tại, hãy tạo các khóa máy chủ với đường dẫn tệp khóa mặc định, cụm mật khẩu trống, bit mặc định cho loại khóa và mặc định bình luận. Điều này được sử dụng bởi / etc / rc để tạo khóa máy chủ mới.
ssh-keygen -A
thực hiện như sau: "Đối với mỗi loại khóa (rsa1, rsa, dsa, ecdsa và ed25519) mà khóa máy chủ không tồn tại, hãy tạo máy chủ lưu trữ các khóa có đường dẫn tệp khóa mặc định, cụm mật khẩu trống, bit mặc định cho loại khóa và nhận xét mặc định. Điều này được sử dụng bởi / etc / rc để tạo khóa máy chủ mới. "
Thực hiện theo các bước sau để tạo lại Khóa máy chủ OpenSSH
rm /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server
~/.ssh/known_hosts
các tệp khách hàng sshĐối với một phương pháp chung để làm điều này:
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
trộn và kết hợp theo các khóa mà phiên bản OpenSSH của bạn hỗ trợ.
ssh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
Xóa chúng và khởi động lại dịch vụ SSHd. Chúng sẽ được tái sinh.
/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
Script (trong trường hợp khởi động lại sshd daemon không tự động tạo lại các phím)
#!/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