暂时禁用来自客户端的 ssh 公钥身份验证

Nsu*_*i _ 49 ssh ssh-keys

有没有办法在 ssh'ing 时暂时禁用公钥身份验证,而使用密码身份验证?

我目前想访问远程服务器,但我使用的是另一台笔记本电脑,不是我的。

浏览该链接,我发现该命令ssh -o PreferredAuthentications=keyboard-interactive -o PubkeyAuthentication=no host1.example.org在任何地方都不起作用。是的,它对我不起作用。我正在使用:OpenSSH_5.9p1 Debian-5ubuntu1,OpenSSL 1.0.1 2012 年 3 月 14 日

编辑:我也尝试输入ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no 但仍然有“权限被拒绝(公钥)”。

那么,在远程服务器中是否有特定的配置要做,以使该命令起作用?或者,该命令何时会按预期工作?

非常感谢您的建议。

小智 26

如果您想在登录服务器时绕过密钥身份验证,只需运行:

ssh -o PubkeyAuthentication=no user@host
Run Code Online (Sandbox Code Playgroud)

  • 这就是人们搜索“ssh 停用密钥”时正在寻找的内容 (2认同)

v25*_*v25 9

这听起来像是服务器端的配置问题。

如果服务器允许公钥和密码身份验证,那么即使您尝试在客户端上没有私钥文件的情况下进行连接,它也应该提示您输入密码。

如果您收到错误消息, "Permission denied (publickey)" 则听起来您的服务器不支持密码身份验证。

如果没有看到 /etc/sshd_config 文件,很难知道,但我的猜测是您需要确保存在以下行:

PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)

重新启动 ssh 服务器,当您从客户端连接时,如果没有私钥存在,或者私钥与服务器上的公钥不匹配,则应该提示您输入密码。

当然,一个更安全的替代方法是将您的私钥复制到您正在使用的笔记本电脑,或者实际上生成一个新的私钥以在该笔记本电脑上使用并将公钥添加到 .ssh/authorized_keys

  • 请不要回答未曾提出的问题。这让其他人从谷歌上找到这个问题变得非常烦人。 (7认同)

小智 7

只需制作一个空白的 ID 文件即可。

touch $HOME/.ssh/blank
Run Code Online (Sandbox Code Playgroud)

如果您将权限保留为 640 或 644,则 ssh 会抱怨权限不够安全并且不会使用它。如果你chmod为600,那么它会提示输入密码3次并失败,因为没有密码。因此,只需将其保留为 640 或 644。

然后当你 ssh 使用这个命令。

ssh -i $HOME/.ssh/blank servername-or-ip
Run Code Online (Sandbox Code Playgroud)

您可以使用 .ssh/config 并将主机条目设置为不使用密钥,但它不是临时的,或者您可以为 server 和 server-nokey 创建别名,但它会变长并且维护起来很痛苦。

  • `-i /dev/null` 也可以工作,不需要检查权限。 (6认同)
  • 这对我也不起作用。它找到了我的 id_rsa 并使用了它。`ssh -o PubkeyAuthentication=no ...` 答案运行良好。 (2认同)