我启动了 AWS 社区 Ubuntu 12.04 桌面 ec2。我将主机添加到我的 ssh 配置中,并使用身份 pem 密钥文件通过 ssh 进入我的 ec2。
我从我的 ec2 中获取了授权密钥公钥文件,并使用公钥创建了本地 ~/.ssh/myserver.pub。我能够通过 ssh 连接到该框并将其 ssh 端口更改为新号码。我重新启动了 ssh 服务,并且能够再次通过 ssh 连接,没有任何问题。
执行 apt-get 更新并安装一些软件后,我需要将文件 scp 到 ec2。SCP 一直失败,并显示“权限被拒绝(公钥)”。我尝试多次复制到远程主机 ubuntu 主目录,但没有任何效果。
我退出了 ssh 会话。我再次尝试 ssh,但收到“权限被拒绝(公钥)”提示。我从 known_hosts 文件中删除了我的 ec2 的主机条目。
我现在不知怎么地被提示使用 ECDSA 主机密钥进行身份验证,而不是使用 RSA 身份验证。
ECDSA key fingerprint is SHA256 xxxxxx
Are you sure you want to continue connecting (yes/no)?
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: x.pem
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
我试过#ssh-keygen -R <my ec2's ip>
:
Host x.x.x.x not found in /Users/username/.ssh/known_hosts
我尝试删除我的 ec2 的 ECDSA 主机条目并手动添加 RSA 主机公钥,然后再次 ssh 登录。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:xxxxx
Add correct host key in /Users/user/.ssh/known_hosts to get rid of this message.
RSA host key for [myserver.mydomain.com]:xxxx has changed and you have requested strict checking.
此 ec2 的安全组未更改,因此这应该不是问题。
我如何摆脱 ECDSA 身份验证,并返回到我开始使用的 SSH 的原始 RSA 身份验证?
答案1
我会对此更加小心。
SSH 服务器不仅会为安全部分生成密钥,还会让您知道连接是否不是到已知服务器。
据我所知,您的服务器之前有一个 RSA 指纹。这是由 OpenSSH 服务器在安装/生成时创建的。现在您说警告指示同一台机器的 ECDSA 密钥指纹。
要特别小心. Amazon EC2 盒子,除非你给它分配一个静态弹性 IP,更改 IP 地址。从 EC2 面板验证您连接的 IP/地址是否是您认为要访问的框。如果不是,则警告已完成其工作。如果是,请查看框上的更新历史记录和 ID 是否openssh-server
最近更新过。如果是,那么很可能它使用 ECDSA 而不是 RSA,因此恢复不太重要(只需从您自己的机器中删除已知指纹~/.ssh/known_servers
(路径即将验证),然后重新连接到服务器。)