我正在通过 NAT 实例连接到虚拟专用服务器的私有子网中的 Amazon Web Service (AWS) EC2 实例,并收到以下错误:
权限被拒绝(公钥)
在我连接到 NAT 并尝试通过 SSH 连接到私有子网 EC2 实例后发生了这种情况。
程序:
~/.ssh/config
使用以下内容 定义主机:Host my_aws_nat Hostname xx.xx.xx.xx User ec2-user IdentityFile /location/of/my/aws/key_pair.pem ForwardAgent yes
通过 SSH 连接到 NAT 实例
ssh my_aws_nat
(成功)通过 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
答案2
对我来说,从中删除堡垒(NAT 实例)的公钥很有帮助~/.ssh/known_hosts
。如果远程堡垒主机的密钥发生变化(如果您将 EIP 分配给新实例,这种情况可能会经常发生),并且还在StrictHostKeyChecking no
您的 ssh_config 中设置了密钥,则堡垒主机上的 AgentForwarding 将被禁用。如果您登录堡垒主机,您还会发现一条警告。就我而言,我只是没有读过它 -.-
因此,删除密钥并重新连接,当前密钥将被添加到known_hosts文件中,您将能够连接到私有子网中的实例。