SSH - 如何將主機新增至 ssh/known_host 文件

SSH - 如何將主機新增至 ssh/known_host 文件

known_hosts 檔案如下所示:-

[localhost]:8001 ssh-dss AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpU   
[10.18.60.198]:8001 ssh-dss AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9
// key are trimmed at the end

此金鑰是透過 Eclipse IDE 新增的,想知道還有哪些方法可以將主機(IP)及其金鑰新增至 ssh/known_hosts 檔案中。

具體:- 如何添加ssh-DSSknown_hosts 檔案中任何主機(IP)的金鑰。

編輯:-

我正在使用 JBoss BRMS,它使用 git 來管理 BRMS 項目,因此在透過 Git 在 Eclipse IDE 中複製 BRMS 專案時,會出現以下錯誤

無法確定主機“localhost”的真實性。
DSA 金鑰指紋為 e2:2c:62 //修剪。
您確定要繼續連線嗎?

然後它會自動將 ssh-dss 金鑰新增到known_hosts 檔案中。

那麼在哪裡可以找到該金鑰並將其手動添加到knownhosts檔案中

答案1

的格式~/.ssh/known_hosts由 OpenSSH 定義。其他軟體可能會呼叫 OpenSSH(SSH命令),或者可能有自己的實現,但不一定 100% 相容。

OpenSSHknown_hosts 格式在sshd(8) 手冊頁,在「ssh_known_hosts 檔案格式」下。它說這是一個文字文件,每個主機密鑰對一行:

這些文件中的每一行包含以下欄位:標記(可選)、主機名稱、金鑰類型、base64 編碼金鑰、註解。欄位之間用空格分隔。 [...] 主機名稱是一個以逗號分隔的模式清單(「*」和「?」充當萬用字元);每個模式依序與主機名稱進行比對。 [...] 主機名稱或位址可以選擇括在「[」和「]」括號內,然後後面跟著「:」和非標準連接埠號碼。

若要自動為新主機新增金鑰,只需透過 SSH 連線即可。

若要手動為新主機新增金鑰,1) 在文字編輯器中開啟known_hosts 文件,2) 依照相同的格式為新主機新增金鑰。 (密鑰必須與您要連接的主機相符。您可以使用 查詢主機的密鑰ssh-keyscan -t <type> <address>。)

新增密鑰全部主機,使用*模式作為主機名,它將匹配所有主機名稱和位址。為所有主機新增密鑰在特定連接埠上,用作[*]:8001主機名。

答案2

例如你需要添加127.0.0.1到已知主機:

ssh-keyscan -H 127.0.0.1 >> ~/.ssh/known_hosts

對於 Docker 文件,我使用:

RUN apt-get update  \
    && apt-get install -y \
    ssh \
    && rm -rf /var/lib/apt/lists/* \
    && mkdir -p ~/.ssh/ \
    && ssh-keyscan -H 192.168.12.31 >> ~/.ssh/known_hosts

哪裡apt-get install -y ssh- 盡可能使用ssh 密鑰掃描在命令行中,然後rm -rf /var/lib/apt/lists/*- 使用 apt 清理下載的包資訊。

答案3

嘗試透過 ssh 連線到您的目標,然後在要求儲存金鑰時輸入 yes。

相關內容