怎么解决密钥登录报错No supported authentication methods available (server sent: publickey)

在阿里云或者aws等服务器上,启用密钥对登录方式,并下载了pem或ppk文件。

用第三方客户端登录方式,用MobaXterm举例

1、点击左上角的"Session" 标签页

2、在 "Session type" 下拉列表中选择 "SSH";在 "Host" 字段中输入你的服务器 IP 地址或域名;在 "User" 字段中输入你的用户名(通常是 root 或者你自己创建的用户名);点击 "Advanced settings" 按钮,展开高级设置选项;在 "Private key for authentication" 部分,点击 "Browse" 按钮来导入你的私钥文件(通常是 .pem 或 .ppk 文件)。

3、填写完所有必要的信息后,点击 "OK" 或 "Quickstart" 按钮来建立连接;如果一切配置正确,MobaXterm 应该能够自动连接到你的服务器而不需要输入密码。

但是经常会遇到这样的报错

怎么解决,先用任何方式登录进控制台

# vim /etc/ssh/sshd_config
添加这两行内容
PubkeyAcceptedKeyTypes +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
# systemctl restart sshd

再次尝试登录,成功

这两个配置是什么作用,如下

在 SSH 配置中,PubkeyAcceptedKeyTypesPubkeyAcceptedAlgorithms 是与公钥认证相关的两个配置项,它们的作用和使用场景有所不同,以下是它们的区别:

1. PubkeyAcceptedKeyTypes

  • 含义 :用于指定服务器接受的客户端公钥的类型。它主要关注的是客户端提供的公钥的格式和种类。

  • 常见值

    • ssh-rsa :RSA 算法生成的公钥,是一种比较传统的公钥类型,使用广泛的 RSA 加密算法。

    • ssh-dss :基于 DSA(数字签名算法)的公钥类型,不过现在使用较少,因为其安全性相对较低。

    • ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521 :这些是基于椭圆曲线加密算法(ECC)的公钥类型,具有较高的安全性且计算效率较好,在现代 SSH 环境中越来越受欢迎。

    • ssh-ed25519 :基于 Edwards-curve Digital Signature Algorithm(EdDSA)的公钥类型,使用的是 ed25519 算法,是一种非常安全且高效的公钥类型,目前被认为是最佳实践之一。

  • 作用 :当客户端尝试使用公钥认证时,服务器会根据 PubkeyAcceptedKeyTypes 中指定的类型来判断客户端提供的公钥是否被接受。如果客户端的公钥类型不在这个列表中,那么公钥认证就会失败。例如,如果服务器配置为只接受 ssh-ed25519 类型的公钥,那么客户端使用 ssh-rsa 类型的公钥就无法进行认证。

2. PubkeyAcceptedAlgorithms

  • 含义 :用于指定服务器接受的公钥算法。这里的算法主要是指在公钥认证过程中用于验证签名的算法,它更关注的是公钥认证过程中签名和验证的具体算法实现。

  • 常见值

    • ssh-rsa :对应于 RSA 算法的签名验证过程。虽然它和 PubkeyAcceptedKeyTypes 中的 ssh-rsa 一样名称,但在这里更强调的是使用 RSA 算法进行签名验证的机制。

    • rsa-sha2-256rsa-sha2-512 :这些是 RSA 算法结合 SHA-256 或 SHA-512 哈希算法的签名验证算法。它们比传统的 ssh-rsa(通常使用 SHA-1 哈希算法)更安全,因为 SHA-1 已经被认为存在安全漏洞。

    • ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521 :这些是椭圆曲线加密算法(ECC)结合 SHA-2 哈希算法的签名验证算法,与 PubkeyAcceptedKeyTypes 中对应的公钥类型相匹配,用于椭圆曲线公钥的签名验证。

    • ssh-ed25519 :对应于 ed25519 算法的签名验证过程,是一种非常安全的算法,适用于现代 SSH 环境。

  • 作用 :在公钥认证过程中,当服务器收到客户端的签名后,会根据 PubkeyAcceptedAlgorithms 中指定的算法来验证签名的有效性。如果客户端使用的签名算法不在这个列表中,即使客户端的公钥类型被接受,认证也会失败。例如,即使服务器接受 ssh-rsa 类型的公钥,但如果客户端使用的是 ssh-rsa(SHA-1)算法进行签名,而服务器配置为只接受 rsa-sha2-256 算法,那么认证也会失败。

总结

  • 范围不同PubkeyAcceptedKeyTypes 关注的是公钥的格式和种类,即公钥本身是什么类型;而 PubkeyAcceptedAlgorithms 关注的是公钥认证过程中用于签名和验证的算法,即如何验证公钥的签名。

  • 配置目的不同PubkeyAcceptedKeyTypes 的配置主要是为了控制哪些类型的公钥可以被接受,从而在一定程度上影响客户端可以使用的公钥类型;PubkeyAcceptedAlgorithms 的配置主要是为了确保公钥认证过程中使用的算法符合安全要求,避免使用不安全的算法导致安全漏洞。

  • 相互关系 :它们在公钥认证过程中是相互配合的。只有当客户端的公钥类型被 PubkeyAcceptedKeyTypes 接受,并且客户端使用的签名算法被 PubkeyAcceptedAlgorithms 接受时,公钥认证才能成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值