将公钥添加到known_hosts文件

Tru*_*ran 14 linux ssh key

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

我的公钥是格式 ssh-rsa AADGD...

有人可以帮忙吗?

谢谢!

use*_*210 9

我就是这样做的。

  1. 在主机服务器上生成密钥。使用下面的命令。

*ssh-keyscan -t rsa 完整服务器名称

命令行和输出

  1. 现在复制突出显示的部分(在图片中)并将此密钥附加到源服务器上的“known_host”文件。当然,这个文件的位置可能因环境不同而不同。


Jak*_*uje 8

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

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

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

11.22.33.44 ssh-rsa AADGD...
Run Code Online (Sandbox Code Playgroud)

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

ssh-keygen -Hf ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)


JS.*_*JS. 8

刚刚遇到这个问题,这是我处理它的方法:

随着时间的推移,通过机械复制文件

ssh-keyscan server-name >> ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

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

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

我决定让ssh处理它:

ssh -o StrictHostKeyChecking=no server-name ls
Run Code Online (Sandbox Code Playgroud)

-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)?
Run Code Online (Sandbox Code Playgroud)

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

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

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

平台:macOS 10.14


And*_*gel 6

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

  1. scppublic key .pub您想要的服务器
  2. 为AWS EC2 ubuntu实例运行
sudo /bin/bash -c "cat /$USER_PATH/public_key.pub  >> $USER_PATH/.ssh/authorized_keys"
Run Code Online (Sandbox Code Playgroud)
  1. known_hosts=运行
sudo /bin/bash -c "cat /$USER_PATH/public_key.pub  >> $USER_PATH/.ssh/known_hosts"
Run Code Online (Sandbox Code Playgroud)
  1. 测试连接ssh

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