暂时禁用客户端的SSH公钥身份验证。

有没有办法在ssh连接时临时禁用公钥身份验证,而使用密码身份验证呢?
我目前想要访问远程服务器,但是我使用的是另一台笔记本电脑,不是我的。
浏览了link,我发现命令ssh -o PreferredAuthentications=keyboard-interactive -o PubkeyAuthentication=no host1.example.org并不适用于所有情况。对我来说也是如此。我正在使用:OpenSSH_5.9p1 Debian-5ubuntu1,OpenSSL 1.0.1 14 Mar 2012
编辑:我还尝试了输入ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no,但仍然显示"Permission denied (publickey)"。
那么,在远程服务器上是否需要进行特定的配置才能使该命令正常工作? 或者,该命令何时会按预期工作?
非常感谢您的建议。

40如果你再次点击链接,会有人提到你的方法不起作用,但是这个方法可以:ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no - NickW
@NikW 非常感谢,也许我应该提一下,我也尝试了你提出的命令,但仍然显示“Permission denied (publickey)”。 - Nsukami _
1刚刚遇到了一个问题,因为我的笔记本电脑上有很多键,ssh尝试了所有的键,结果我连输入密码的机会都没有就被拒绝了。谢谢你的关心。 - Dallaylaen
3@NickW 如果你把你的评论作为答案,我会点赞的。 - labyrinth
3个回答

如果你想在登录服务器时绕过密钥验证,只需运行以下命令:
ssh -o PubkeyAuthentication=no user@host

1对我来说没有解决问题。 - reinierpost
1当人们搜索“ssh deactivate keys”时,这就是他们在寻找的内容。 - Kyle

这听起来像是服务器端的配置问题。
如果服务器允许使用公钥和密码进行身份验证,那么即使在客户端没有私钥文件的情况下尝试连接,它也应该提示您输入密码。
如果您收到错误消息 "Permission denied (publickey)",那么很可能是您的服务器不支持密码身份验证。
没有看到/etc/sshd_config文件,很难确定,但我猜想您需要确保以下行存在:
PasswordAuthentication yes

重新启动ssh服务器,当你从客户端连接时,如果没有私钥存在或者私钥与服务器上的公钥不匹配,你应该会被提示输入密码。
当然,更安全的替代方法是将你的私钥复制到你正在使用的笔记本电脑上,或者实际上生成一个新的私钥用于该笔记本电脑,并将公钥添加到.ssh/authorized_keys文件中。

7请不要回答未被提出的问题。这会让通过谷歌搜索找到这个问题的其他人感到非常烦恼。 - Timmmm

只需创建一个空白的ID文件即可。
touch $HOME/.ssh/blank

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

然后当您使用ssh时,请使用以下命令。

ssh -i $HOME/.ssh/blank servername-or-ip

你可以使用.ssh/config文件,并设置一个主机条目来不使用密钥,但这种方法不够临时;或者你可以为服务器和无密钥服务器创建别名,但这样会变得很长并且难以维护。

8-i /dev/null也可以使用,并且不需要检查权限。 - svvac
1空/空文件无法正常工作,ssh 报错 Load key "/dev/null": invalid format,然后继续使用您配置的其他密钥,但由于过多身份验证失败,最终无法登录。 - Malvineous
对我来说,这个方法不起作用。也许我的凭据被存储在Gnome密钥环中。 - Yaroslav Nikitenko
2这对我也没用。它找到了我的id_rsa并使用了它。ssh -o PubkeyAuthentication=no ... 这个答案很有效。 - bitinerant

  • 相关问题