Linux

在配置每台伺服器時將 RSA 密鑰指紋添加到 known_hosts 的最佳方法是什麼?

  • January 19, 2021

這個問題的靈感來自這個執行緒

假設場景,對於上下文如下:

  1. SSH 伺服器,無論是路由器、防火牆等,都首先在私有 + 安全環境中進行配置,然後再進行部署。SSH 密鑰是在此環境中的伺服器上本地生成的。
  2. SSH 伺服器有自己的 ACL,用於拒絕來自除我們主機之外的任何東西的連接
  3. 主機將是具有多個使用者的 Linux 機器

標準方法可能是使用 PKI,並在所有使用者帳戶上安裝受信任的 CA,並部署本地 SCEP 伺服器等。但取而代之的是,謹慎的做法是:

  1. 在安全環境中,並在配置時,將伺服器的 RSA 指紋導入known_hosts我們主機的容器(或儲存它的任何地方,我對 Linux 還不太熟悉),使用ssh-keyscan -H x.x.x.x >> ~/.ssh/known_hosts
  2. 在該主機上的使用者之間共享/鏡像該 RSA 指紋容器
  3. 配置主機/每個使用者在出現以下提示時拒絕/丟棄/拒絕連接,以便

The authenticity of host '[hostname] ([IP address])' can't be established. RSA key fingerprint is [key fingerprint]. Are you sure you want to continue connecting (yes/no)?

  1. 他們無法連接到任何未完成此過程的伺服器,然後
  2. 對於無法實施上述過程+限制但仍需要遠端配置的情況,也許創建一個單獨的沙盒使用者,以便主要更常用的密碼不會被可能的假 SSH 伺服器破壞。

您有內部 DNS 伺服器嗎?將主機公鑰放入 SSHFP 記錄中。現在它們可以在您的整個組織中使用,而無需在任何地方手動複製。需要配置客戶端電腦VerifyHostKeyDNS yes以檢查它們。像這樣的東西/etc/ssh/ssh_config

Match host *.internal.example.com
   VerifyHostKeyDNS yes

要防止連接到未知主機,請使用StrictHostKeyChecking yes. 但請注意,需要連接到新主機是很常見的,因此這可能會帶來足夠的不便,導致使用者嘗試繞過它。有關可能達到更好平衡的替代配置,請參見手冊頁。

引用自:https://serverfault.com/questions/1050370