如何通过ssh从一个ec2实例连接到另一个ec2实例

时间:2014-02-14 13:17:49

标签: ssh amazon-ec2 ssh-keys

我有两个亚马逊ec2实例

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

现在我想在我的ec2实例中安装钨复制器 和钨复制器需要从一个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实例连接到另一个

5 个答案:

答案 0 :(得分:3)

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

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

然后将两个文件复制到相同位置和权限的其他主机。

这样就可以在不需要自己的钥匙的情况下使用钨。

答案 1 :(得分:1)

就像从本地计算机到ssh实例必须EC2一样,您需要为ssh命令提供正确的pem文件:

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

允许一个EC2实例连接到另一个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}

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

答案 4 :(得分:0)

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