密钥介绍:
Ed25519密钥: 优点:基于 Edwards 曲线密码学,安全性高,具有良好的性能。 缺点:可能不是在所有 SSH 客户端和服务器上广泛支持。 状态:Ed25519 密钥在许多现代系统中得到广泛支持,特别是在 OpenSSH 中。
RSA(Rivest-Shamir-Adleman)密钥: 优点:广泛支持,安全性良好,已被使用多年。 缺点:相对于一些新的加密算法,RSA 密钥可能需要更大的密钥长度来提供相同的安全性。 状态:RSA 密钥仍然非常常见,但在某些情况下,新的密钥类型正在逐渐取代它。
ECDSA(Elliptic Curve Digital Signature Algorithm)密钥: 优点:使用椭圆曲线密码学,提供了较高的安全性与较短的密钥长度。 缺点:可能不是在所有 SSH 客户端和服务器上广泛支持。 状态:ECDSA 密钥在一些现代系统中得到广泛支持,特别是在嵌入式设备上。
DSA(Digital Signature Algorithm)密钥: 优点:较短的密钥,适合资源有限的设备。 缺点:较少使用,相对于其他密钥类型,安全性较低。 状态:DSA 密钥在某些情况下被使用,但不再被认为是最安全的选项。
目前,Ed25519 密钥正逐渐成为 SSH 的主流选择,因为它提供了强大的安全性和性能,并且在许多常见的 SSH 客户端和服务器上得到广泛支持。尤其是,OpenSSH 7.0 版本及更高版本默认支持 Ed25519 密钥。它的性能好,安全性高,密钥长度短,是一个很好的选择。
生成密钥
修改 sshd_config 文件
sudo vim /etc/ssh/sshd_config
打开文件之后去掉这两行注释:
RSAAuthentication yes # SSH 第二代协议已经将此参数废弃了
PubkeyAuthentication yes .ssh/authorized_keys
另外,请留意 root 用户能否通过 SSH 登录:
PermitRootLogin yes
为用户导入公钥
进入用户的家目录(即 /home/username/)目录下的 .ssh 子目录,编辑 authorized_keys 文件内容。如果没有 .ssh 目录和 authorized_keys 文件,则需要手动创建,然后把公钥写入 authorized_keys 文件内。
vim /home/username/.ssh/authorized_keys
如果原本就有 authorized_keys 文件,并且已经有公钥,直接换行(一定要换行)之后在原有公钥后面追加新的公钥即可
注: 公钥添加在哪个用户文件夹下就对哪个用户生效,不添加则不生效(包括 root)
禁用密码登录当完成全部设置,并以密钥方式登录成功后,再次进入 /etc/ssh/sshd_config 目录下禁用密码登录:
sudo vim /etc/ssh/sshd_config
将 PasswordAuthentication 参数后面的 yes 改为 no
PasswordAuthentication no
重启 SSH 服务
重启 ssh 服务:
sudo service sshd restart