如何解决将 SSH 连接到我的 ec2 实例并部署代码的 Github 操作
我有点困惑。 我正在尝试使用 github 操作通过 SSH 连接到我的 ec2 实例并进行部署。我将密钥(来自 ec2 控制台)作为秘密保存在 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 是黄金标准)。所以我会非常具体地说明我做了什么:
- 进入密钥对
- 创建了一个新的密钥对并下载了 pem 文件
- 将 pem 文件的整个文本复制到秘密 COBOTSSH 中
- 将 EC2 实例的 DNS 名称复制到 KNowN_HOSTS(与变量名称相反,它只是一个 DNS 条目)
- 在我的 putty 终端上使用 SSH 登录到该框,并创建一个名为 X 的用户,然后将 X 放入 USERNAME 密码中。
我认为这是错误的,因为它默认需要密码?但错误没有任何冗长。如何使用 EC2 控制台中的密钥并仍然运行
ssh-copy-id
之类的命令? 一种 任何关于如何执行此操作的逐行示例将非常受欢迎 - 我是 linux 菜鸟。
解决方法
根据Q&A on the shimataro/ssh-key-action。
主机密钥验证失败。: 正确设置 known_hosts 参数(使用 ssh-keyscan 命令)。
KNOWN_HOSTS
秘密应该反映 known_hosts
文件的样子。 known_hosts
文件包含您之前连接到的远程服务器的 SSH 指纹。远程服务器的 known_hosts
文件中的条目在 Windows 上看起来像这样(在 Ubuntu Linux 上,IP 看起来像乱码,也许它也被加密了):
3.25.10.23 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNosdfwecYTItbmlzdHAyNAAAIbmlzdHAyNTYAAABBBAets0ZEyan6q5K1Z7fiMcqpLLjtSGaqn5kwec2vXCdLumKdtWmJexjc1Q8U43COnEiOyEI9HSHBYqm5E1Rog=
该错误是因为您将 EC2 DNS 复制到 KNOWN_HOSTS
密钥中,这不是正确的格式。 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}
。它在提示中显示指纹(忽略它)并询问我是否要连接到主机。单击“是”,它会将 SSH 指纹存储在您操作系统的 known_hosts
文件中。然后我简单地打开文件并将条目复制到 KNOWN_HOSTS
秘密。
注意:shimataro 概述了在大多数情况下使用“StrictHostKeyChecking=no”是不安全的。见here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。