亚马逊 Web 服务 (AWS) VPC 私有子网实例‘权限被拒绝 (公钥)’- 来自 osx 的 ssh

亚马逊 Web 服务 (AWS) VPC 私有子网实例‘权限被拒绝 (公钥)’- 来自 osx 的 ssh

我正在通过 NAT 实例连接到虚拟专用服务器的私有子网中的 Amazon Web Service (AWS) EC2 实例,并收到以下错误:

权限被拒绝(公钥)

在我连接到 NAT 并尝试通过 SSH 连接到私有子网 EC2 实例后发生了这种情况。

程序:

  1. ~/.ssh/config使用以下内容 定义主机:

    Host my_aws_nat
    Hostname xx.xx.xx.xx
    User ec2-user
    IdentityFile /location/of/my/aws/key_pair.pem
    ForwardAgent yes
    
  2. 通过 SSH 连接到 NAT 实例ssh my_aws_nat(成功)

  3. 通过 SSH 连接到私有子网中的实例- 这时我收到错误ssh [email protected]

我能够使用 ping 我的私有实例ping 10.0.X.X。所以我很确定这不是安全组问题。这看起来像是代理转发问题。

目前,我连接的实例使用与 NAT 实例相同的密钥对(处于学习模式)。

我尝试过的另一种方法是使用以下命令连接到 NAT:

ssh -A [email protected] -i key_pair.pem

再次,正确连接到 NAT,但连接到私有实例时出现相同的错误。

我必须ssh-agent在 Mac OS X 上使用吗?

或者不应该指定ForwardAgent yes/.ssh/config同样的事情吗?

答案1

按照回答并本指南

我需要将其添加key_pair.pem到 OSX ssh 代理,如下所示:

ssh-add -K /path/to/key_pair.pem

(就我而言,它没有要求输入密码)

此后,使用上述两种方法,一切都运行正常。

因此,回答这个问题:

问: 我是否必须在 Mac OS X 上使用 ssh-agent 通过 NAT/堡垒主机登录到私有子网实例?
A: 是的

答案2

对我来说,从中删除堡垒(NAT 实例)的公钥很有帮助~/.ssh/known_hosts。如果远程堡垒主机的密钥发生变化(如果您将 EIP 分配给新实例,这种情况可能会经常发生),并且还在StrictHostKeyChecking no您的 ssh_config 中设置了密钥,则堡垒主机上的 AgentForwarding 将被禁用。如果您登录堡垒主机,您还会发现一条警告。就我而言,我只是没有读过它 -.-

因此,删除密钥并重新连接,当前密钥将被添加到known_hosts文件中,您将能够连接到私有子网中的实例。

相关内容