怎么解决密钥登录报错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 配置中,PubkeyAcceptedKeyTypes 和 PubkeyAcceptedAlgorithms 是与公钥认证相关的两个配置项,它们的作用和使用场景有所不同,以下是它们的区别:
1. PubkeyAcceptedKeyTypes
-
含义 :用于指定服务器接受的客户端公钥的类型。它主要关注的是客户端提供的公钥的格式和种类。
-
常见值 :
-
ssh-rsa:RSA 算法生成的公钥,是一种比较传统的公钥类型,使用广泛的 RSA 加密算法。 -
ssh-dss:基于 DSA(数字签名算法)的公钥类型,不过现在使用较少,因为其安全性相对较低。 -
ecdsa-sha2-nistp256、ecdsa-sha2-nistp384、ecdsa-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-256、rsa-sha2-512:这些是 RSA 算法结合 SHA-256 或 SHA-512 哈希算法的签名验证算法。它们比传统的ssh-rsa(通常使用 SHA-1 哈希算法)更安全,因为 SHA-1 已经被认为存在安全漏洞。 -
ecdsa-sha2-nistp256、ecdsa-sha2-nistp384、ecdsa-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接受时,公钥认证才能成功。
更多推荐




所有评论(0)