我将远程服务器升级到 Ubuntu 16.04(从 14.10 开始)。
然后我将其重新配置为仅使用密钥而不使用密码。通过编辑文件,/etc/ssh/sshd_config
我将以下内容更改为:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
然后使用以下命令重新加载 shh 服务:systemctl reload sshd
当前的问题是,由于某种原因,~/.ssh/authorized_keys 文件中的所有公共 ssh 密钥似乎无效。
所以现在,我无法再登录了。我只得到 Permission denied (publickey)。我尝试了多个 -o 选项来强制输入密码,但没有成功。我所需要的只是能够使用密码登录。
非常感谢所有的帮助。
答案1
如果你无法启动到 root shell,那你就有点没救了。我以前见过这种情况,当时人们忘记更改密钥文件的访问权限。推荐的方法是尝试使用密钥前关闭基于密码的身份验证。
如果它是云中的实例,请致电您的提供商并让他们重置密码(这可能不是免费的,甚至不提供。)
如果它是一个真正的盒子并且有人在你附近,那就打电话给他们并用披萨贿赂他们。
否则,就需要上车。
当您进入计算机时,按下任何神奇的 F 键,即可进入启动菜单,然后选择“root shell”。将文件系统挂载为可写。然后将配置文件编辑回其启动位置并重试。
此外,出于这个原因,我通常会坐在机器前面进行此操作。在 VPS 情况下,我会先在本地机器上练习此方法,以确保我的方法正确。
答案2
Ubuntu 16.04 已禁用 dsa 密钥,现在仅接受 rsa 密钥。这也困扰了我,但幸运的是,我仍然启用了密码访问。
你可以加
Host *
PubkeyAcceptedKeyTypes=+ssh-dss
到 ~/.ssh/config,或者切换到 rsa 密钥。进入后...