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

标签 amazon-web-services amazon-ec2 ssh github-actions

我有点困惑。
我正在尝试使用 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 是黄金标准)。所以我会非常具体地说明我做了什么:
  • 去 key 对
  • 创建了一个新的 key 对并下载了 pem 文件
  • 将 pem 文件的整个文本复制到 secret COBOTSSH
  • 将 EC2 实例的 DNS 名称复制到 KNOWN_HOSTS(与变量名称相反,它只是一个 DNS 条目)
  • 在我的 putty 终端上使用 SSH 登录到盒子,并创建一个名为 X 的用户,然后将 X 放入 USERNAME 密码中。
    我认为这是错误的,因为它默认需要密码?但错误没有任何冗长。如何使用 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/

    相关文章:

    java - 在Java中更改AWS SDK的用户代理

    amazon-web-services - 在 CloudFormation 脚本中使用私有(private) AMI

    node.js - AWS 上的实时数据库

    amazon-web-services - AWS Elastic Beanstalk 日志轮换

    amazon-web-services - 如何使用 AWS CLI 在同一行中列出所有具有名称、状态、实例大小和 AZ 的实例

    amazon-web-services - 安装phpmyadmin时php56-common与php-common-5.3.29-1.8.amzn1.x86_64冲突

    python - Paramiko 在执行大型 wget 命令时挂起

    linux - ssh通行证安全吗?

    通过 ssh 从远程存储库 :fatal: protocol error: bad line length character: fata 进行 git 克隆

    spring - 在 Amazon Beanstalk 上处理 Spring Boot 集群 Websocket