OpenSSH 私钥的 SSH 身份验证问题

Sub*_*de0 35 linux ssh openssh kali-linux

我尝试在 Kali Linux 系统(版本 16.0-kali6-amd64,2022-03-23)上使用 SSH 命令时遇到问题。我正在尝试使用 OpenSSH 私钥进行身份验证。

我首先使用以下命令:

ssh -i id_rsa root@<ip>
Run Code Online (Sandbox Code Playgroud)

但是,这导致了以下错误:

无法与端口 22 协商:未找到匹配的主机密钥类型。他们的报价:ssh-rsa、ssh-dss

经过一番研究,我尝试使用以下命令来解决该问题:

ssh -oHostKeyAlgorithms=+ssh-dss -i id_rsa root@<ip>
Run Code Online (Sandbox Code Playgroud)

但使用此命令时,即使我打算使用 id_rsa 密钥进行身份验证,它也会提示我输入密码。

在详细输出中,我注意到以下消息:

  • “‘load_hostkeys’没有这样的目录”
  • “找到 DSA 主机密钥”
  • “获取agent_identities:代理不包含身份,将尝试某些密钥(明确)”
  • “send_pubkey_test:无相互签名算法”

然后,身份验证过程尝试使用密码并提供提示。

我需要有关使用 OpenSSH 私钥进行 SSH 身份验证的帮助。

小智 46

正如 @dave_thompson 提到的,使用 ssh 时可以使用附加参数:

ssh -v -oHostKeyAlgorithms=+ssh-rsa username@ipaddress
Run Code Online (Sandbox Code Playgroud)

或者另一种选择,如果您经常通过 ssh 访问服务器,您可以在文件夹.ssh中创建一个名为config的文件,然后在配置文件中添加此密钥:

Host [ipaddress]
    HostKeyAlgorithms=+ssh-rsa
Run Code Online (Sandbox Code Playgroud)

配置文件与第一种方法具有相同的结果。