Làm cách nào để thay đổi khóa máy chủ SSH?


23

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:


23

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.


Các thẻ của OP chỉ định debian, nhưng không cụ thể về nền tảng, câu trả lời này có vẻ như là giải pháp tốt hơn.
mc0e

Hmm, ngoại trừ nó dường như không hoạt động cho các phiên bản cũ hơn. Ví dụ: thất bại trong việc nén debian, có OpenSSH_5.5p1
mc0e

1
Đối với thông tin của bạn (từ manpagez.com/man/1/ssh-keygen ) ssh-keygen -Athự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. "
Rabarberski

19

Thực hiện theo các bước sau để tạo lại Khóa máy chủ OpenSSH

  1. Xóa khóa máy chủ ssh cũ: rm /etc/ssh/ssh_host_*
  2. Cấu hình lại máy chủ OpenSSH: dpkg-reconfigure openssh-server
  3. Cập nhật tất cả ~/.ssh/known_hostscác tệp khách hàng ssh

Tài liệu tham khảo


8

Đố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ợ.


1
Tôi nghĩ một cách để cải thiện câu hỏi này là thêm cách để tăng số lượng bit. tức làssh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
Whitecat

0

Xóa chúng và khởi động lại dịch vụ SSHd. Chúng sẽ được tái sinh.


1
Không, nó không hoạt động. /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
Thật. Chỉ hoạt động trên các bản phân phối dựa trên RHEL. Xin lỗi
Heis Spiter

Lời khuyên tốt, cảm ơn. Nó làm việc cho tôi khi cài đặt CentOS.
George Gaál

Chắc chắn hoạt động trên Fedora
David Tonhofer

0

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

Liên kết trong bình luận của bạn không nói rằng ECDSA không nên được sử dụng.
Todd Walton

@ToddWalton Thật ra nó có. Câu trả lời thứ ba theo trình tự: "- Không bao giờ sử dụng DSA hoặc ECDSA. - Ed25519 có lẽ là mạnh nhất về mặt toán học (và cũng là nhanh nhất), nhưng chưa được hỗ trợ rộng rãi. Như một phần thưởng, nó có mã hóa mạnh hơn (bảo vệ mật khẩu) của khóa riêng theo mặc định so với các loại khóa khác. - RSA là đặt cược tốt nhất nếu bạn không thể sử dụng Ed25519. "
David Tonhofer

À, bạn nói đúng. Tôi thấy nó bây giờ.
Todd Walton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.