不接受私钥(OpenSSH 客户端调试)

默认情况下,大多数信息对用户是隐藏的。你可以使用 -v 开关获取连接尝试的详细日志,这通常会通过显示行为与预期不同的原因来查明问题。

假设你使用 ssh(或其他 OpenSSH 客户端,如 sftpscp)连接到服务器 example.com,服务器不接受你的私钥,服务器要求输入密码(或拒绝连接):

$ ssh example.com
user@example.com's password: 

尝试使用 -vvv 开关运行 ssh,它将写出所有调试消息。这将是很多信息,但过了一段时间,很容易理解:

$ ssh -vvv example.com

最常见的问题是密钥不在预期的位置。你可以期待出现类似的行,抱怨丢失的文件。检查你的文件是否真正被读取是一个良好的开端:

debug1: identity file /home/username/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/username/.ssh/id_dsa-cert type -1

我们可以继续进行身份验证部分。密钥可能会提供,但由于服务器配置问题而被服务器拒绝。日志可能看起来像这样:

debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: username@localhost
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password