在阿里云或者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
接受时,公钥认证才能成功。