SSH 使用 密钥对 登陆
密钥对:一对密钥,公钥 和 私钥
不是一台Linux只能有一个密钥对,而是每个用户分别都能有一个公钥和私钥
生成密钥对:
ssh-keygen 命令默认生成当前用户的公钥和私钥
ssh-keygen -t rsa -b 4096 //-b可以不键入,默认使用的是 2048 位的密钥, 默认使用rsa算法
其中,-t rsa 表示使用 RSA 算法生成密钥对,RSA 算法是一种非对称加密算法,其中公钥和私钥是不同的。-b 4096 表示使用 4096 位的密钥长度。密钥长度越长,安全性越高,但生成和使用密钥的时间也会更长。因此,ssh-keygen -t rsa -b 4096 命令将生成一个 4096 位的 RSA 密钥对,其中包括一个私钥和一个公钥。私钥存储在本地计算机上,而公钥则可在需要连接的服务器上进行配置,以实现安全的 SSH 登录。
该命令将生成一对公钥和私钥,默认存储在目录 ~/.ssh/下,其中私钥文件名为id_rsa,公钥文件名为id_rsa.pub。
将公钥文件上传到远程服务器:
ssh-copy-id skills39@192.168.10.99ssh-copy-id [用户]@[IP]
这条命令,默认将当前用户的公钥复制到远程服务器的 ~/.ssh/authorized_keys
authorized_keys 就是公钥复制后的文件,authorized_keys 能够存放所有获取到的用户公钥凭据,不是只能存放一个用户的凭据
仅复制远程服务器上的指定用户,如上述:skills39
若不指定用户,则默认复制到 root用户
修改SSH服务配置文件
打开SSH服务的配置文件/etc/ssh/sshd_config,找到以下两行内容:
RSAAuthentication yes# PubkeyAuthentication yes
将前面的注释符#去掉,并将值修改为yes,如下所示:
RSAAuthentication yes //用于指定使用RSA算法进行身份验证PubkeyAuthentication yes //启用公钥身份验证
保存修改并关闭文件。
重启SSH服务
使用以下命令重启SSH服务:
systemctl restart sshd
现在,使用SSH客户端连接到SSH服务器时,可以选择使用密钥对登录。如果本地主机上的私钥文件不在默认目录~/.ssh/下,可以使用以下命令指定私钥文件:
ssh -i /home/keys skills39@192.168.10.99ssh -i [私钥路径] [用户]@[IP]
其中,/path/to/private_key为私钥文件的路径。