2016-07-28 76 views
11

连接超时我下面this教程安装在AWS EC2实例EFS但当荫执行安装命令AWS EFS在安装

sudo mount -t nfs4 -o vers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).[EFS-ID].efs.[region].amazonaws.com:/ efs 

我每次收到连接超时。

mount.nfs4: Connection timed out 

这里有什么问题?

在此先感谢!

+1

您是否确定在此步骤中已连接安全组https://docs.aws.amazon.com/efs/latest/ug/gs-step-one-create-ec2-resources.html – error2007s

+0

@ error2007s感谢指出,似乎我没有添加默认的安全组,因为我得到了连接超时。 – pmann

+0

请标记我的答案是正确的。谢谢你 – error2007s

回答

0

EFS上的Connection timed out发生是由于未将具有端口22的安全组添加到公开的EC2实例(您要在其上挂载EFS)。再加上这个sec grp会让问题变得更糟。

编辑:

随着打开需要添加VPC的默认安全组EFS连接到EC2实例的端口22。正如教程中提到的那样

这可以确保该实例是Amazon EFS文件系统安装目标将为步骤2中的连接授权的安全组的成员:创建Amazon EFS文件系统。

P.S .:我忘了将默认安全组添加到实例,这就是为什么我得到连接超时错误。

+0

如果我不想将22公开给公众?我启用所有vpc端口,由于某种原因仍然超时。 – Sherzod

+4

端口22与ssh相关,而不是NFS。不知道为什么这被标记为正确的答案。 –

+0

尽管有AWS文档,这不是一个正确的答案 - 开放的世界端口22永远不是一个好主意,并且与NFS无关。 –

9

将带有NFS和端口2049的类型添加到您的安全组的入站,以确定您的EC2实例和EFS正在运行。这个对我有用。

+2

这是正确的答案。对于EC2实例安全组,添加Type EFS(它已经配置为端口2049)和EFS所在的安全组的源并开始工作。如上述答案中所建议的将端口22公开是不必要的,并且在很多情况下不是一个好主意,并且不能解决问题。 – tommyvn

8

我发现这里的接受的答案是不正确的&不安全,高于宝的回答是非常接近 - 除了你不需要在你的EC2 NFS入境(安装目标)安全组。您只需要一个分配给您的EC2的安全组(即使没有规则),以便您的EFS安全组可以限制到该安全组......您知道,为了安全!这是我发现的作品:

  • 您的EC2实例创建一个新的安全组。将其命名为EFS Target,并将所有规则留空
  • 为您的EFS挂载创建一个新的安全组。将其命名为EFS Mount,并在此处为NFS添加inbound规则。将此规则的SOURCE设置为您在上面创建的EFS Target安全组。这将EFS限制为仅能够连接到分配有安全组的EC2实例(请参见下文)。如果你不担心这一点,你可以从Source下拉列表中选择“Any”,它将工作得一样,没有额外的安全级别
  • 转到EC2控制台,并将EFS Target组添加到您的EC2实例,假设你添加额外的安全
  • 转到EFS控制台,选择您的EFS,然后选择管理文件系统访问
    • 对于每一个EFS配置对象(可用区),你需要添加EFS Mount安全组并删除VPC默认组(如果您还没有)
  • 的AWS文档中的mount命令应该工作现在

我不喜欢他们怎么混白话这里EC2是一个安装目标方面,也EFS对每个可用区单独安装的目标。使他们的文档非常混乱,但按照上述步骤允许我在Ubuntu服务器上安全地安装EFS。

+2

伟大的工作斯科特。这应该是被接受的答案。很好的方式让安全团队屈从于你的意愿。 – TMc

+0

@斯科特谢谢你,最好的答案。我建议添加TL; DR:在EFS配置中的SecGroups是EFS所属的,而不是像大家想象的那样是NFS客户端。 – Putnik