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 项目,因此在 Eclipse IDE 中通过 Git 克隆 BRMS 项目时出现以下错误
无法确认主机“localhost”的真实性。DSA
密钥指纹为 e2:2c:62 //已修剪。
您确定要继续连接吗?
然后它会自动将 ssh-dss 密钥添加到 known_hosts 文件中。
那么在哪里可以找到该密钥并将其手动添加到 knownhosts 文件上
答案1
的格式~/.ssh/known_hosts
由 OpenSSH 定义。其他软件可以调用 OpenSSH(远程控制命令),或者可能有自己的实现,但这些实现不一定 100% 兼容。
OpenSSH known_hosts 格式的描述见sshd(8) 手册页,在“ssh_known_hosts 文件格式”下。它表示这是一个文本文件,每行包含一个主机密钥对:
这些文件中的每一行都包含以下字段:标记(可选)、主机名、密钥类型、base64 编码密钥、注释。字段以空格分隔。[…] 主机名是一个以逗号分隔的模式列表(“
*
”和“?
”充当通配符);每个模式依次与主机名匹配。[…] 主机名或地址可以选择括在“[
”和“]
”括号内,然后跟上“:
”和非标准端口号。
要自动为新主机添加密钥,只需通过 SSH 连接到该主机即可。
要手动添加新主机的密钥,1) 在文本编辑器中打开 known_hosts 文件,2) 按照相同格式添加新主机的密钥。(密钥必须与您要连接的主机匹配。您可以使用 查询主机的密钥ssh-keyscan -t <type> <address>
。)
添加密钥全部主机,使用*
模式作为主机名,它将匹配所有主机名和地址。要为所有主机添加密钥在特定端口上,用作[*]:8001
主机名。
答案2
例如你需要添加127.0.0.1至 known_hosts:
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。