创建公私钥
Xshell


密钥类型可以按照实际情况选择。以下列举一下DSA、RSA、ECDSA、ED25519的区别
| 特性 |
DSA |
RSA |
ECDSA |
ED25519 |
| 原理 |
基于离散对数问题,使用两个数学函数进行签名和验证。 |
利用大整数分解难题,通过一对公钥和私钥来加密和解密数据或生成签名。 |
基于椭圆曲线上的点乘运算的困难性,提供与DSA相似的功能但基于椭圆曲线密码学。 |
使用扭曲的爱德华兹曲线实现的一种特定形式的数字签名算法,属于椭圆曲线密码学的一部分。 |
| 性能 |
签名速度较快,但在验证签名时效率低于RSA和ECDSA。 |
签名生成较慢,尤其是使用较大密钥时;验证签名相对较快。 |
提供了更快的签名和验证速度,尤其是在使用相同安全级别的情况下,比RSA更高效。 |
在所有操作中都表现出色,特别是在签名生成和验证的速度方面,通常被认为是最快的。 |
| 安全性 |
安全性依赖于参数的选择和随机数生成的质量。若随机数不充分随机,可能导致私钥泄露。 |
需要足够大的密钥长度以保证安全(推荐至少2048位),同时注意避免常见的攻击手段如侧信道攻击。 |
相同密钥长度下,比RSA提供更高的安全性。同样需要注意随机数质量的问题。 |
设计上考虑了防止多种类型的攻击,包括侧信道攻击,提供了强大的安全性保障。 |
| 兼容性 |
被广泛支持,特别是在SSH等协议中,但由于性能和安全性的原因,逐渐被其他算法取代。 |
广泛应用于各种场景,拥有良好的向后兼容性。 |
支持度不断增加,尤其是在需要高效和安全解决方案的新系统中。 |
尽管是一个较新的算法,但由于其优越的性能和安全性,正快速获得支持,尤其在现代软件和协议中。 |
接下来一路下一步

下面这一步的给用户密钥加密是用来给私钥加密的,若加密了,使用私钥时还需要私钥的密码才能成功登录

生成后把公钥保存下来,复制或保存文件,这里边公钥格式有两种,一般默认就行了,下面也简单列举两种的区别
| 特性 |
SSH2 - OpenSSH |
SSH2 - IETF SECSSH |
| 实现方式 |
开源的SSH协议套件,广泛应用于Linux、Unix、macOS等操作系统。 |
遵循IETF制定的安全Shell(SSH)协议标准的实现,注重标准化和一致性。 |
| 特性集 |
提供多种额外功能,如端口转发、X11转发、SCP、SFTP等工具。 |
专注于核心协议功能,可能不包含OpenSSH中的一些扩展功能。 |
| 更新频率 |
拥有活跃的开源社区支持,更新快速,能及时响应安全威胁。 |
更新依赖于IETF的标准进程,可能较慢,但更注重长期稳定性和一致性。 |
| 兼容性 |
广泛兼容各种操作系统和服务,是许多服务器默认配置的一部分。 |
更加注重跨平台和供应商之间的互操作性,遵循统一标准。 |
| 安全性 |
安全性强,但可能因附加功能而存在一些潜在风险。 |
严格遵守IETF定义的安全标准,理论上提供更加一致的安全性保证。 |
| 灵活性 |
功能丰富,支持自定义配置和扩展,适合复杂的实际应用场景。 |
更加精简,专注于核心功能,可能缺乏某些高级或非标准功能。 |
| 社区和支持 |
拥有庞大的开源社区支持,问题解决和更新速度快。 |
依赖于IETF标准组织的支持,更新和问题解决速度可能较慢,但更规范。 |

最后来到这一步,将私钥导出为文件就行了

配置公钥(Debian11/12为例)
- 进入目录
cd ~/.ssh
- 维护公钥
echo "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKVxVGAe95P7J/Nyiiy+aJvWPnC+IMTwLE+VZiY8oLzy/bxmCiE/SQIVtPON3WA+QEcMzj2ei1v1+cNXqBJbfnA=" > authorized_keys
- 登录验证一下,然后关闭密码登录
echo "PasswordAuthentication no" > /etc/ssh/sshd_config.d/disablePwdLogin.conf
- 重启SSHD,完成
systemctl restart sshd