微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 SSH 连接到我的 ec2 实例并部署代码的 Github 操作

如何解决将 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 是黄金标准)。所以我会非常具体地说明我做了什么:

  1. 进入密钥对
  2. 创建了一个新的密钥对并下载了 pem 文件
  3. 将 pem 文件的整个文本复制到秘密 COBOTSSH 中
  4. 将 EC2 实例的 DNS 名称复制到 KNowN_HOSTS(与变量名称相反,它只是一个 DNS 条目)
  5. 在我的 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?