Ssh

AWS 主機密鑰驗證失敗

  • February 28, 2020

過去幾天,我在連接任何 AWS EC2 實例時遇到了一些麻煩。上週三(四天前)我能夠很好地登錄到 EC2 並使用 Docker 安裝 Jenkins。星期四早上我嘗試登錄到同一個 EC2 並收到“主機密鑰驗證失敗”。從那時起,我嘗試了以下方法:

  • 仔細檢查我在 EC2 上的入站規則以驗證埠 22 上是否允許訪問
  • 仔細檢查子網上的網路 ACL 以驗證埠 22 上是否允許訪問
  • 刪除了我的 Mac 上的 ~/.ssh/known_hosts 文件,認為這可能是一個 RSA 密鑰問題,就像這裡描述的那樣。據我了解, known_hosts 文件將在成功連接時重新創建。
  • 啟動第二個 EC2,它是第一個(CentOS 7 社區 AMI,ami-b81dbfc5)的複製,並嘗試在該 EC2 中進行 SSH(失敗)
  • 啟動了第三個 EC2,它是第一個的複製,但使用了新的 pem 文件(失敗)
  • 將筆記型電腦切換到我的 Ubuntu 16.04 並使用第二個 pem 文件嘗試連接到第三個 EC2(失敗)
  • 使用預設配置啟動 Amazon 的標準 AMI (ami-467ca739) 並嘗試使用 Ubuntu 機器上的第二個 pem 文件連接到該 EC2(失敗)

請注意,前兩次 EC2 嘗試具有與這些 VM 關聯的彈性 IP。最後兩個 EC2 沒有與之關聯的彈性 IP,以防萬一這是問題的根源。所有 EC2 都部署在北弗吉尼亞地區,並部署在同一個 VPC 中。

對於它的價值,我希望登錄到 EC2 以便將 Jenkins 使用者添加到 Docker 使用者組。我正在嘗試建立一個 devops 管道。但是,顯然,無法登錄任何 EC2 是根本問題和核心障礙。

下面是 ssh 嘗試中的一些詳細輸出。我無法思考我還可以嘗試什麼,但通常當這種情況發生時,這意味著我忽略了一些東西:-)。有什麼想法會阻止多個客戶端登錄到一個區域中的任何 EC2?子網上的網路 ACL 和 EC2 上的入站規則都是我能想到的,但如前所述,這些都是開放的。我可能更可能不了解詳細輸出以了解要嘗試的下一個操作。提前致謝!


public:pem-files$ ssh -i fresh-ec2-test-180513.pem ec2-user@ec2-18-205-21-67.compute-1.amazonaws.com -v
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to ec2-18-205-21-67.compute-1.amazonaws.com [18.205.21.67] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file fresh-ec2-test-180513.pem type -1
debug1: key_load_public: No such file or directory
debug1: identity file fresh-ec2-test-180513.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000
debug1: Authenticating to ec2-18-205-21-67.compute-1.amazonaws.com:22 as 'ec2-user'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:oeuVV0FGR89PJZvDi+oFvE+ltn5hN8T1Gtf6EjhUC9w
The authenticity of host 'ec2-18-205-21-67.compute-1.amazonaws.com (18.205.21.67)' can't be established.
ECDSA key fingerprint is SHA256:oeuVV0FGR89PJZvDi+oFvE+ltn5hN8T1Gtf6EjhUC9w.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.

嘗試從本地電腦上刪除此主機的密鑰,~/.ssh/known_hosts並在系統詢問您“是否確定要繼續連接(是/否)?”時回答“是”。如果您需要在沒有人工干預的情況下以程式方式執行此操作,您可以這樣做,ssh -oStrictHostKeyChecking=no但顯然不建議這樣做。

這似乎是“主機密鑰驗證失敗”問題的第一個問答,所以我將在這裡發表我的評論。

當我嘗試將 SFTP 與非預設 2222 埠一起使用時,我遇到了同樣的錯誤。經過幾次嘗試並啟用詳細模式後,我似乎輸入了錯誤的命令,因此我得到了無效的已知主機條目。

錯誤的:

sftp -v user@myhostname:2222

對:

sftp -P 2222 -v user@myhostname

因此,**請注意您正在使用的埠,**因為它會影響已知主機和進一步的連接。

引用自:https://serverfault.com/questions/912004