有没有办法在 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 并设置主机条目以不使用密钥,但它不是临时的,或者您可以为服务器和服务器无密钥创建别名,但它会变得很长并且维护起来很麻烦。