Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux SSH 連線去除「The authenticity of host can't be established」提示

編輯:關於 Linux

SSH 首次連線新主機或主機金鑰變更時,會提示 The authenticity of host ... can't be established 要求輸入 yes。自動化腳本、備份同步、叢集管理中此交互極度干擾。本文提供兩種層級的抑制方案。

方案一:單次命令抑制(推薦臨時使用)

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
# 或簡寫
ssh -o StrictHostKeyChecking=no user@host
  • StrictHostKeyChecking=no:自動接受新金鑰,不提示;
  • UserKnownHostsFile=/dev/null:不寫入 ~/.ssh/known_hosts,避免污染;
  • 適用於 rsync -e "ssh -o ..."、scp -o ... 等場景。

方案二:全域配置永久抑制(僅限受信內網)

編輯 /etc/ssh/ssh_config(系統級)或 ~/.ssh/config(用戶級):


Host *
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

生效:systemctl restart sshd 或重新登入。

安全性邊界:何時可用、何時禁用

場景建議理由
自動化部署腳本(Ansible/腳本)方案一(命令級)可控範圍,不影響互動登入
內網叢集節點互信(已知金鑰)方案二可接受網路受控,金鑰變更極少
跨公網連線生產伺服器嚴禁中間人攻擊風險極高
金鑰輪換後首次連線方案一驗證新金鑰指紋後再寫入 known_hosts

相關問題:Host key verification failed

若已知主機金鑰變更(重裝系統、換 IP),需先清理舊記錄:

ssh-keygen -R hostname
# 或手動刪除 ~/.ssh/known_hosts 對應行

然後正常連線接受新金鑰,切勿永久關閉驗證。

最佳實踐:自動化部署的正確姿勢

  1. 部署前透過 ssh-keyscan 預掃描並寫入 known_hosts:
    ssh-keyscan -H target_host >> ~/.ssh/known_hosts
  2. 腳本中使用 StrictHostKeyChecking=yes(預設),確保金鑰一致性;
  3. 金鑰變更時,流程中包含 ssh-keygen -R 步驟。

「便利不應犧牲安全」,請在受控邊界內精準使用抑制選項。

Copyright © Windows教程網 All Rights Reserved