将公钥添加到known_hosts文件

时间:2016-01-20 17:12:44

标签: linux ssh key

我正在尝试将服务器A中的公钥复制到服务器B中的known_hosts文件。它们都是Linux服务器。最初我考虑打开公钥文件并将其内容复制到known_hosts文件,但我怀疑这不是正确的方法。有谁知道这样做的正确方法是什么?

我的公钥格式为const

有人可以帮忙吗?

谢谢!

4 个答案:

答案 0 :(得分:7)

几天前我在SuperUser回答了几乎相似的答案。重要的部分:

  • 格式不同
  • 每台服务器上都有不同的主机密钥(类型)(确保粘贴实际使用的主机密钥)
  • ssh-keyscan可以为您创建格式

否则只需在密钥前加上服务器IP地址(您可以在逗号后添加主机名),从行尾删除注释即可。然后格式如下:

11.22.33.44 ssh-rsa AADGD...

还有一点需要注意,如果你使用HashKnownHosts yes(Debian和Ubuntu),你需要重新哈希你的known_hosts,例如:

ssh-keygen -Hf ~/.ssh/known_hosts

答案 1 :(得分:3)

这就是我做到的。

  1. 在主机服务器上生成密钥。使用以下命令。
  2. * ssh-keyscan -t rsa full-server-name

    Command line and output

    1. 现在复制突出显示的部分(在图片中)并将此密钥附加到源服务器上的'known_host'文件。当然,对于不同的环境,此文件的位置可能会有所不同。

答案 2 :(得分:1)

刚刚碰到这个问题,这就是我的解决方法:

随着时间的流逝,通过以下方式自动复制文件

ssh-keyscan server-name >> ~/.ssh/known_hosts

在.ssh / known_hosts中给了我重复的条目。

其他手动方法要求我创建.ssh目录不存在,等等。

我决定只让ssh处理它:

ssh -o StrictHostKeyChecking=no server-name ls

-o StrictHostKeyChecking=no选项自动回答

The authenticity of host 'server-name (12.345.678.900)' can't be established.
RSA key fingerprint is XXXXXXX.
Are you sure you want to continue connecting (yes/no)?

消息(在此处插入有关随机连接到您不知道的计算机的所有安全警告)。

ls命令只是一个绒毛命令,它将执行并在完成后强制SSH断开连接。您可以将其更改为所需的任何绒毛命令。

ssh将负责创建.ssh目录(如有必要),仅添加密钥的一个副本,等等。

平台:macOS 10.14

答案 3 :(得分:0)

假设您有一个名为publickey.pub的文件,请执行以下操作:

  1. scp public key .pub到您想要的服务器
  2. 运行AWS ubuntu实例`sudo / bin / bash -c“ cat /$USER_PATH/public_key.pub >> $ USER_PATH / .ssh / authorized_keys”
  3. 对于known_hosts =运行`sudo / bin / bash -c“ cat /$USER_PATH/public_key.pub >> $ USER_PATH / .ssh / known_hosts”
  4. 使用ssh测试

注意:请确保您检查公用密钥的格式。我到目前为止所看到的是从加密算法开始的,例如ssh-rsa