暂时禁用客户端的 ssh 公钥认证

暂时禁用客户端的 ssh 公钥认证

有没有办法在 ssh 时暂时禁用公钥认证,而改用密码认证?

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

浏览关联,我发现这个命令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 但仍然出现“权限被拒绝(公钥)”的情况。

那么,在远程服务器中是否需要进行特定配置才能使该命令正常工作?或者,该命令何时才能按预期工作?

非常感谢您的建议。

答案1

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

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

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

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

PasswordAuthentication yes

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

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

答案2

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

ssh -o PubkeyAuthentication=no user@host

答案3

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

touch $HOME/.ssh/blank

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

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

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

您可以使用 .ssh/config 并设置主机条目以不使用密钥,但它不是临时的,或者您可以为服务器和服务器无密钥创建别名,但它会变得很长并且维护起来很麻烦。

相关内容