将 public 键添加到 known_hosts 文件
Add public key to known_hosts file
我正在尝试将 public 密钥从服务器 A 复制到服务器 B 中的 known_hosts 文件。它们都是 linux 服务器。最初我想打开 public 密钥文件并将其内容复制到 known_hosts 文件,但我怀疑这不是正确的方法。有谁知道这样做的正确方法是什么?
我的 public 密钥的格式是 ssh-rsa AADGD...
有人可以帮忙吗?
谢谢!
我几天前在 SuperUser 上回答了几乎相似的答案。重要部分:
- 格式不同
- 每个服务器上有不同的主机密钥(类型)(确保粘贴实际使用的那个)
- 有
ssh-keyscan
可以为您创建格式
否则只需在您的密钥前加上服务器 IP 地址(您也可以在逗号后添加主机名),删除行尾的注释就可以了。格式则如下所示:
11.22.33.44 ssh-rsa AADGD...
另外请注意,如果您使用 HashKnownHosts yes
(Debian 和 Ubuntu 可以),您需要 re-hash 您的 known_hosts
例如:
ssh-keygen -Hf ~/.ssh/known_hosts
我就是这样做的。
- 在主机服务器上生成密钥。使用以下命令。
*ssh-keyscan -t rsa 全服务器名称
- 现在复制突出显示的部分(在图片中)并将此密钥附加到源服务器上的“known_host”文件。当然,这个文件的位置可能因环境不同而不同。
刚遇到这个问题,我是这样处理的:
随着时间的推移,通过
机械地复制文件
ssh-keyscan server-name >> ~/.ssh/known_hosts
在 .ssh/known_hosts 中给我重复的条目。
其他手动方法要求我创建 .ssh
目录不存在等
我决定让ssh
处理它:
ssh -o StrictHostKeyChecking=no server-name ls
-o StrictHostKeyChecking=no
选项自动回答 'yes' 到
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 断开连接。您可以将其更改为您喜欢的任何 fluff 命令。
ssh 将负责创建 .ssh
目录(如有必要),仅添加一个密钥副本等。
平台:macOS 10.14
假设您有一个名为 publickey.pub
的文件,那么请这样做:
scp
public key .pub
到您想要的服务器
- 运行 对于 AWS EC2 ubuntu 实例
sudo /bin/bash -c "cat /$USER_PATH/public_key.pub >> $USER_PATH/.ssh/authorized_keys"
- 对于
known_hosts
=运行
sudo /bin/bash -c "cat /$USER_PATH/public_key.pub >> $USER_PATH/.ssh/known_hosts"
- 测试与
ssh
的连接
注意:确保检查 public 的密钥格式。到目前为止,我所看到的都是从加密算法开始的,例如ssh-RSA
我正在尝试将 public 密钥从服务器 A 复制到服务器 B 中的 known_hosts 文件。它们都是 linux 服务器。最初我想打开 public 密钥文件并将其内容复制到 known_hosts 文件,但我怀疑这不是正确的方法。有谁知道这样做的正确方法是什么?
我的 public 密钥的格式是 ssh-rsa AADGD...
有人可以帮忙吗?
谢谢!
我几天前在 SuperUser 上回答了几乎相似的答案。重要部分:
- 格式不同
- 每个服务器上有不同的主机密钥(类型)(确保粘贴实际使用的那个)
- 有
ssh-keyscan
可以为您创建格式
否则只需在您的密钥前加上服务器 IP 地址(您也可以在逗号后添加主机名),删除行尾的注释就可以了。格式则如下所示:
11.22.33.44 ssh-rsa AADGD...
另外请注意,如果您使用 HashKnownHosts yes
(Debian 和 Ubuntu 可以),您需要 re-hash 您的 known_hosts
例如:
ssh-keygen -Hf ~/.ssh/known_hosts
我就是这样做的。
- 在主机服务器上生成密钥。使用以下命令。
*ssh-keyscan -t rsa 全服务器名称
- 现在复制突出显示的部分(在图片中)并将此密钥附加到源服务器上的“known_host”文件。当然,这个文件的位置可能因环境不同而不同。
刚遇到这个问题,我是这样处理的:
随着时间的推移,通过
机械地复制文件ssh-keyscan server-name >> ~/.ssh/known_hosts
在 .ssh/known_hosts 中给我重复的条目。
其他手动方法要求我创建 .ssh
目录不存在等
我决定让ssh
处理它:
ssh -o StrictHostKeyChecking=no server-name ls
-o StrictHostKeyChecking=no
选项自动回答 'yes' 到
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 断开连接。您可以将其更改为您喜欢的任何 fluff 命令。
ssh 将负责创建 .ssh
目录(如有必要),仅添加一个密钥副本等。
平台:macOS 10.14
假设您有一个名为 publickey.pub
的文件,那么请这样做:
scp
public key .pub
到您想要的服务器- 运行 对于 AWS EC2 ubuntu 实例
sudo /bin/bash -c "cat /$USER_PATH/public_key.pub >> $USER_PATH/.ssh/authorized_keys"
- 对于
known_hosts
=运行
sudo /bin/bash -c "cat /$USER_PATH/public_key.pub >> $USER_PATH/.ssh/known_hosts"
- 测试与
ssh
的连接
注意:确保检查 public 的密钥格式。到目前为止,我所看到的都是从加密算法开始的,例如ssh-RSA