SSH 密钥在 Ubuntu Azure VPS 上停止工作

SSH 密钥在 Ubuntu Azure VPS 上停止工作

我有一个在 Azure 上运行的 Ubuntu 实例。过去 6 个月左右我一直在使用它来提升我的新手 Linux 管理技能。昨天,我正在配置 Capistrano 部署到此服务器时,我的 ssh 密钥突然停止工作。过去,我Permission denied在尝试 ssh 到该框时看到过这种情况,我只是重新添加我的私钥交给关键代理,它又起作用了。我从来没有真正确定为什么钥匙坏了,但我可以毫不费力地修好它,而且这种情况并不经常发生,所以我没怎么在意。但是昨天,我没能用这种方法解决这个问题,从那以后,我一直在绞尽脑汁想找出问题所在。

以下是我已采取的步骤和尝试过的方法:

  • 这是我通常运行的操作(直到昨天为止已经运行了几个月):ssh azure-southerneer
  • 我的 ~/.ssh/config 中的相关条目:

    Host azure-southerneer
    Hostname southerneer.cloudapp.net
    User azureuser
    IdentityFile ~/.ssh/azure-wp-eric.key
    IdentitiesOnly yes
    ServerAliveInterval 300 
    StrictHostKeyChecking no
    
  • 输出:Permission denied (publickey).
  • 如果我使用 -v 标志运行它,我会得到以下结果:

    OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
    OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
    debug1: Reading configuration data /Users/kirkham/.ssh/config
    debug1: /Users/kirkham/.ssh/config line 27: Applying options for azure-southerneer
    debug1: Reading configuration data /etc/ssh_config
    debug1: /etc/ssh_config line 20: Applying options for *
    debug1: /etc/ssh_config line 102: Applying options for *
    debug1: Connecting to southerneer.cloudapp.net [191.237.4.63] port 22.
    debug1: Connection established.
    debug1: identity file /Users/kirkham/.ssh/azure-wp-eric.key type -1
    debug1: identity file /Users/kirkham/.ssh/azure-wp-eric.key-cert type -1
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_6.2
    debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
    debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: server->client aes128-ctr [email protected] none
    debug1: kex: client->server aes128-ctr [email protected] none
    debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
    debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
    debug1: Server host key: RSA 77:6f:e6:84:ca:09:04:83:fd:37:96:3f:d3:2a:77:a6
    debug1: Host 'southerneer.cloudapp.net' is known and matches the RSA host key.
    debug1: Found key in /Users/kirkham/.ssh/known_hosts:78
    debug1: ssh_rsa_verify: signature correct
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    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: /Users/kirkham/.ssh/azure-wp-eric.key
    debug1: read PEM private key done: type RSA
    debug1: Authentications that can continue: publickey
    debug1: No more authentication methods to try.
    Permission denied (publickey).
    

怎么回事?!它尝试了正确的键,但它就是不喜欢它了?!

  • 我知道服务器已启动并运行,因为我托管的网站仍然运行良好。从详细的 ssh 输出来看,它显然有响应,只是它不喜欢我的 azure-wp-eric.key(它没有改变)。
  • 我并没有故意摆弄服务器上 azureuser 主目录或 .ssh 目录的权限,所以这应该不会搞乱任何东西。
  • 我尝试过从 Azure 管理门户弹出服务器,但这并没有解决任何问题。
  • 我昨天早上确实在服务器上运行过sudo apt-get update,但是在测试我的 capistrano 部署时我全天都能够正常使用 ssh,所以这似乎没有造成问题。

此时,我已经无计可施了。我显然不太擅长解决 ssh 问题,所以我正在慢慢地阅读文章,试图找到我遗漏的内容。我不知道有什么方法可以系统地找出我做错的地方,作为一名开发人员,这真的让我很困扰。我是不是忽略了什么?还有其他东西可以验证我走的路是对的还是错的?有没有其他人在 Ubuntu 或 Azure VM 上遇到过类似的问题?如果我可以提供任何进一步的详细信息来帮助诊断问题,请告诉我。请帮忙!

答案1

我意识到了自己的错误。感谢@kasperd 帮我解决了这个问题。我关注了Azure 的 SSH 创建说明一丝不苟。当我生成密钥时,我使用了这个命令

openssl req -x509 -key ~/.ssh/id_rsa -nodes -days 365 -newkey rsa:2048 -out myCert.pem

这会生成一个新密钥,该密钥将在 365 天后过期。碰巧的是,昨天就是第 365 天,这意味着我的密钥不再有效。由于这是 VM 的唯一密钥,我想我完蛋了?看起来是这样。呃。

更新: 根据 @kasperd 的评论,我的服务器在设置后整整一年内停止让我使用 SSH,这可能只是一个疯狂的巧合。感谢通过讨论主题进行对话在 Azure 文档网站上,我发现通过图库创建的 Azure Linux VM 已加载 Microsoft Azure Linux 代理,该代理允许管理员通过命令行重置 SSH(即 Powershell)。因此,虽然切换到 Windows 对我来说很麻烦,但我能够按照步骤重置虚拟机上的 SSH 选项。不幸的是,我仍然无法通过 SSH 进入我的机器。显然,我对我的机器做了一些重置选项无法覆盖的极端操作,但对于情况不那么严重的用户,希望他们可以按照这些链接中的一些内容来帮助解决他们的情况。

相关内容