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 项目,因此在 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。

相关内容