Bagaimana cara mengubah kunci host SSH?

23

Saya mengkloning server dan mereka memiliki sidik jari kunci RSA yang sama.

Tampaknya didefinisikan dalam /etc/ssh/ssh_host_rsa_key.pub.

Apa cara yang benar untuk mengubahnya?

Terima kasih.

Pascal Polleunus
sumber

Jawaban:

23

Atau, hapus kunci dan

ssh-keygen -A

Penjelasan:

-A: Untuk masing-masing jenis kunci (rsa1, rsa, dsa, ecdsa dan ed25519) yang tidak memiliki kunci host, buat kunci host dengan jalur file kunci default, frasa sandi kosong, bit default untuk jenis kunci, dan default komentar. Ini digunakan oleh / etc / rc untuk menghasilkan kunci host baru.

philippe
sumber
Tag OP menentukan debian, tetapi karena tidak spesifik platform, jawaban ini sepertinya solusi yang lebih baik.
mc0e
Hmm, kecuali sepertinya tidak berfungsi untuk versi yang lebih lama. Misalnya gagal pada debian squeeze, yang memiliki OpenSSH_5.5p1
mc0e
1
Untuk informasi Anda (dari manpagez.com/man/1/ssh-keygen ) ssh-keygen -Alakukan hal berikut: "Untuk masing-masing jenis kunci (rsa1, rsa, dsa, ecdsa dan ed25519) yang tidak memiliki kunci host, hasilkan host kunci dengan path file kunci default, frasa sandi kosong, bit default untuk jenis kunci, dan komentar default. Ini digunakan oleh / etc / rc untuk menghasilkan kunci host baru. "
Rabarberski
19

Ikuti langkah-langkah ini untuk membuat ulang Kunci Host OpenSSH

  1. Hapus kunci host ssh lama: rm /etc/ssh/ssh_host_*
  2. Konfigurasi ulang OpenSSH Server: dpkg-reconfigure openssh-server
  3. Perbarui semua ~/.ssh/known_hostsfile klien ssh

Referensi

Pascal Polleunus
sumber
8

Untuk metode umum dalam melakukan ini:

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

campur dan cocokkan dengan tombol yang didukung versi OpenSSH Anda.

Olipro
sumber
1
Saya pikir salah satu cara untuk meningkatkan pertanyaan ini adalah dengan menambahkan cara untuk meningkatkan jumlah bit. yaitussh-keygen -q -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
Whitecat
0

Hapus dan restart layanan SSHd. Mereka akan dilahirkan kembali.

Heis Spiter
sumber
1
Tidak, itu tidak berhasil. /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
Memang. Hanya bekerja pada distribs berbasis RHEL. Maaf
Heis Spiter
Saran yang bagus, terima kasih. Ini bekerja untuk saya pada instalasi CentOS.
George Gaál
Jelas bekerja di Fedora
David Tonhofer
0

Script (jika me-restart daemon sshd tidak secara otomatis membuat ulang kunci)

#!/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
David Tonhofer
sumber
Tautan dalam komentar Anda tidak mengatakan bahwa ECDSA tidak boleh digunakan.
Todd Walton
@ToddWalton Sebenarnya begitu. Jawaban ketiga secara berurutan: "- Jangan pernah menggunakan DSA atau ECDSA. - Ed25519 mungkin adalah yang terkuat secara matematis (dan juga yang tercepat), tetapi belum didukung secara luas. Sebagai bonus, ia memiliki enkripsi yang lebih kuat (perlindungan kata sandi) kunci pribadi secara default daripada jenis kunci lainnya - RSA adalah taruhan terbaik jika Anda tidak dapat menggunakan Ed25519. "
David Tonhofer
Ah kamu benar Saya melihatnya sekarang.
Todd Walton