我有两个亚马逊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实例连接到另一个
答案 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