我透過 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]
我可以使用 NAT 從我的私有實例中 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檔案中,您將能夠連接到私有子網路中的執行個體。