Github动作SSH到我的ec2实例和部署代码



我有点糊涂了。我试图使用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是黄金标准)。所以我要非常具体地说明我做了什么:

  1. to keypairs
  2. 创建一个新的密钥对并下载pem文件
  3. 将pem文件的整个文本复制到COBOTSSH秘密文件
  4. 将EC2实例的DNS名称复制到KNOWN_HOSTS中(与变量名称相反,它只是一个DNS条目)
  5. 在我的putty终端上使用SSH登录到机箱,创建一个名为X的用户,然后将X输入USERNAME密钥。我想这是错误的,因为它默认需要密码?但是这个错误没有任何赘述。如何从EC2控制台使用密钥并仍然运行ssh-copy-id之类的命令?一个任何一行一行的例子如何做到这一点将是超级赞赏-我是一个linux新手。

根据shimataro/ssh-key-action上的Q&A

主机密钥验证失败。正确设置known_hosts参数(使用ssh-keyscan命令)

KNOWN_HOSTS秘密应该反映known_hosts文件的样子。known_hosts文件包含您以前连接的远程服务器的SSH指纹。在Windows上,远程服务器的known_hosts文件中的条目可能看起来像这样(在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}。它在提示符中显示一个指纹(忽略它),并询问我是否要连接到主机。单击"Yes",它会将SSH指纹存储在操作系统的known_hosts文件中。然后我简单地打开文件并将条目复制到KNOWN_HOSTSsecret中。

注意:shimataro概述使用'StrictHostKeyChecking=no'在大多数情况下是不安全的。看到这里。

最新更新