暂时从客户端禁用ssh公钥身份验证


37

有没有办法在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 但仍然有“权限被拒绝(公钥)”。

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

非常感谢您的建议。


30
如果您再次访问该链接,那么会有人指出您的方法不起作用,但是确实如此:ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no
NickW

@NikW非常感谢,也许我应该提到它,也尝试了您提出的命令,但仍然具有“权限被拒绝(公钥)”。
Nsukami _

1
刚遇到这个问题是因为我的笔记本电脑有很多按键,而ssh尝试了所有按键,而我什至没有机会输入密码就被拒绝了。感谢您的询问。
Dallaylaen 2015年

3
@NickW如果您将评论作为答案,我会赞成。
迷宫

Answers:


9

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

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

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

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

PasswordAuthentication yes

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

当然,更安全的选择是将私钥复制到正在使用的笔记本电脑上,或者实际上生成要在该笔记本电脑上使用的新私钥,并将公钥添加到 .ssh/authorized_keys


6

只需创建一个空白的ID文件即可。

touch $HOME/.ssh/blank

如果您将权限保留为640或644,则ssh会抱怨该权限不够安全且无法使用。如果将其更改为600,它将提示输入3次密码,但由于没有密码而失败。因此,只需将其保留为640或644。

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

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

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


5
-i /dev/null也可以使用,并且不需要检查权限。
svvac

sshLoad key "/dev/null": invalid format,空白/空文件不起作用,然后它将继续使用您已配置的其他密钥,然后由于身份验证失败过多而无法登录。
恶意

对我来说这是行不通的。也许我的凭据存储在gnome密钥环中。
Yaroslav Nikitenko
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.