我有点困惑。
我正在尝试使用 github 操作通过 SSH 连接到我的 ec2 实例并进行部署。我将 key (来自 ec2 控制台)作为 secret 保存在 github 中,如下所示:
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.COBOTSSH }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
- name: ssh
run: ssh ${{ secrets.USERNAME }}@${{ secrets.KNOWN_HOSTS }}
不幸的是我得到:Host key verification failed.
我已经尝试了多个 SSH github 操作解决方案,所以我认为这是用户错误(shimataro 是黄金标准)。所以我会非常具体地说明我做了什么:我认为这是错误的,因为它默认需要密码?但错误没有任何冗长。如何使用 EC2 控制台中的 key 并仍然运行类似
ssh-copy-id
的命令?一个
任何关于如何执行此操作的逐行示例将非常受欢迎 - 我是 linux noob。
最佳答案
根据 Q&A on the shimataro/ssh-key-action .
Host key verification failed.: Set known_hosts parameter correctly (use ssh-keyscan command).
KNOWN_HOSTS
secret 应该反射(reflect)什么known_hosts
文件看起来像。 known_hosts
文件包含您之前连接到的远程服务器的 SSH 指纹。 known_hosts
中的一个条目远程服务器的文件在 Windows 上看起来像这样(在 Ubuntu Linux 上,IP 看起来像乱码,也许它也被加密了):3.25.10.23 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNosdfwecYTItbmlzdHAyNAAAIbmlzdHAyNTYAAABBBAets0ZEyan6q5K1Z7fiMcqpLLjtSGaqn5kwec2vXCdLumKdtWmJexjc1Q8U43COnEiOyEI9HSHBYqm5E1Rog=
错误是因为您将 EC2 DNS 复制到 KNOWN_HOSTS
secret ,这不是正确的格式。 EC2 DNS 看起来像:ec2-3-5-30-213.ap-southeast-2.compute.amazonaws.com
要获得正确的指纹,您可以打开您的 known_hosts
记事本中的文件。在 Windows 上,它位于 C:\Users\{YourUserName}\.ssh
在 Linux (Ubuntu) 上,它位于 \home\{YourUserName}\.ssh
.您或许能够通过 IP 地址识别远程服务器条目。它不在我的那里,所以我打开了一个终端(在 windows 或 linux 上)并做了
ssh {YourRemoteServerUser}@{YourRemoteServerIP}
.它在提示中显示指纹(忽略它)并询问我是否要连接到主机。单击"is",它会将 SSH 指纹存储在 known_hosts
中。适用于您的操作系统的文件。然后我简单地打开文件并将条目复制到 KNOWN_HOSTS
secret 。注意:shimataro 概述了在大多数情况下使用“StrictHostKeyChecking=no”是不安全的。见 here .
关于amazon-web-services - 将 SSH 连接到我的 ec2 实例并部署代码的 Github 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65752426/