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。