【问题标题】:how to connect from one ec2 instance to another ec2 instance through ssh如何通过 ssh 从一个 ec2 实例连接到另一个 ec2 实例
【发布时间】:2026-02-23 07:20:06
【问题描述】:

我有两个亚马逊 ec2 实例

我可以使用 putty 从我的窗口连接到那些 ec2 实例(通过从亚马逊提供的私钥生成的公钥)

现在我想将钨复制器安装到我的 ec2 实例中 并且 tungsten 复制器需要从一个 ec2 实例到另一个 ec2 实例的 ssh 访问

我试图检查 ssh 从一个 ec2 实例到另一个实例是否正常工作 我试过了:

ssh ec2-user@public ip of destination instance
//also tried
ssh ec2-user@private ip destination instance

但它不起作用

我收到以下错误:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

我在谷歌上搜索并尝试了一些技巧,但都没有奏效

有时我收到以下错误:

Address public_ip maps to xxxx.eu-west-1.compute.amazonaws.com, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!

谁能告诉我如何将 ssh 从一个 ec2 实例连接到另一个

【问题讨论】:

  • 你试过用实例的fqdn代替IP地址吗?

标签: ssh amazon-ec2 ssh-keys


【解决方案1】:

我建议您为 tungsten 用户创建一个特殊的密钥对。

cd tungsten-user-home/.ssh
ssh-keygen -t rsa
mv id-rsa.pub authorized-keys

然后将这两个文件复制到另一台主机的相同位置和权限。

这将使 tungsten 无需您自己的密钥即可工作。

【讨论】:

  • 是的,您的流程有效。我的错误是我只将发布密钥内容复制到授权密钥文件,但需要将私钥和公钥文件也复制到 .ssh 文件夹到所有其他实例。感谢您的帮助。
  • 我不喜欢这个:mv id-rsa.pub 授权密钥。删除原始公钥很容易,尤其是对于那些没有经验的人。
【解决方案2】:

就像你必须从本地机器 sshEC2 实例一样,你需要为 ssh 命令提供正确的 pem 文件:

ssh -i my_pem_file.pem ec2-user@private-or-public-ip-or-dns

【讨论】:

    【解决方案3】:

    以防万一有人思考这个问题,这是我的 2 美分。

    从另一个 EC2 实例连接一个 EC2 实例将按照“Uri Agassi”的建议工作。考虑到最佳实践和安全性,最好为源 EC2 实例创建和分配角色。

    【讨论】:

      【解决方案4】:

      允许一个 EC2 实例连接到另一个实例的一种方法是在目标 EC2 实例上设置一个入口规则,使其接受来自源 EC2 实例的安全组的流量。这是一个使用 Boto3 执行此操作的 Python 函数:

      import boto3
      ec2 = boto3.resource('ec2')
      
      def allow_security_group_ingress(target_security_group_id, source_security_group_name):
          try:
              ec2.SecurityGroup(target_security_group_id).authorize_ingress(
                  SourceSecurityGroupName=source_security_group_name)
              logger.info("Added rule to group %s to allow traffic from instances in "
                          "group %s.", target_security_group_id, source_security_group_name)
          except ClientError:
              logger.exception("Couldn't add rule to group %s to allow traffic from "
                               "instances in %s.",
                               target_security_group_id, source_security_group_name)
              raise
      

      设置后,将密钥对的私钥放在源实例上,并在从源实例 SSH 时使用:

      ssh -i {key_file_name} ec2-user@{private_ip_address_of_target_instance}
      

      GitHub /awsdocs/aws-doc-sdk-examples 上有一个完整的 Python 示例说明如何执行此操作。

      【讨论】:

        【解决方案5】:

        看,如果您使用相同或不同的密钥对部署了两台机器,这不是问题,只需转到您的主机 ec2 机器并在 .ssh 文件夹中创建一个与使用的密钥名称相同的密钥文件创建第二台机器,现在使用 chmod 400 keypair name 然后尝试 ssh -i keyname user-name@IP

        【讨论】: