Amazon Web Service (AWS) VPC 私有子網路執行個體“權限被拒絕(公鑰)。” - 來自 osx 的 ssh

Amazon Web Service (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]

我可以使用 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

按照回答和本指南

我需要將其新增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檔案中,您將能夠連接到私有子網路中的執行個體。

相關內容