# 重設 SSH 服務的主機金鑰
確保在 clone 虛擬機或容器後 SSH 服務可以有獨一無二的金鑰對,避免共用金鑰造成的資訊安全危害。
<https://hackmd.io/@ops-notes-tw/reset-ssh-service-host-keys>
## 內容大綱
[TOC]
## 注意事項
請只在可以臨機操作的前提下進行本操作,避免意外斷線/服務重啟後無法存取伺服器。
## 操作流程
以下說明如何完成本操作:
1. 以 root 身份執行下列命令移除舊的 SSH 服務金鑰:
```bash
rm -v /etc/ssh/ssh_host_*
```
1. 重建服務端的金鑰對:
+ (限 Debian 系作業系統散布版)
以 root 身份執行下列命令執行 openssh-server 軟體包的重新設定程序,其會自動重建服務端的金鑰對:
```bash
dpkg-reconfigure openssh-server
```
+ (其他作業系統散布版)
以 root 身份執行下列命令重建服務端的金鑰對:
```bash
ssh-keygen -A
```
其跟 Debian 系作業系統散布版的方式之差異是 Debian 系的作法不會建立特定類型的金鑰對(如因為安全性問題已經棄用之 DSA 演算法金鑰)
1. 參閱[查詢 SSH 服務的公鑰指紋 | 維運猿的共同筆記](/kpxQmG1BQEur33j_3_EQcQ)的說明重新產生並紀錄 SSH 服務的公鑰指紋。
1. 通知所有會連上該主機的客戶端操作者主機金鑰異動以及新的金鑰對指紋,讓他們可以應對像是下面的金鑰異動警告:
```text
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:JHd/zi4P/m3+R9raCbkSTbU7BHg49wEipK6CN8xn3Uo.
Please contact your system administrator.
Add correct host key in /home/brlin/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /home/brlin/.ssh/known_hosts:223
remove with:
ssh-keygen -f '/home/brlin/.ssh/known_hosts' -R 'example.local'
Host key for example.local has changed and you have requested strict checking.
Host key verification failed.
```
## 參考資料
下列資料在撰寫本主題期間被參考:
* [Ubuntu / Debian Linux 重新產生 OpenSSH Host Keys 的方法 | The Will Will Web](https://blog.miniasp.com/post/2010/08/30/Ubuntu-Debian-Linux-Regenerate-OpenSSH-Host-Keys)
* [Ubuntu / Debian Linux Regenerate OpenSSH Host Keys - nixCraft](https://www.cyberciti.biz/faq/howto-regenerate-openssh-host-keys/)
---
本作品為[《維運猿的共同筆記》](https://hackmd.io/@ops-notes-tw/home)的一部分
頁面連結:<https://hackmd.io/@ops-notes-tw/reset-ssh-service-host-keys>
授權條款:<https://hackmd.io/@ops-notes-tw/licensing>
參與協作視同將您的貢獻內容以相同的授權條款釋出