在SSH(Secure Shell)中,公钥(Public Key)和私钥(Private Key)是一对密钥,用于实现安全的身份验证和加密通信
- 公钥(Public Key):可以公开分发,通常上传到服务器或其他客户端,服务器会将公钥存储在用户的授权文件(如~/.ssh/authorized_keys)中
- 私钥(Private Key):必须严格保密,不能泄露。私钥用于在客户端进行身份验证,只有持有正确私钥的用户才能通过SSH连接到服务器
1.生成本地密钥
打开终端,运行以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa:指定密钥类型为RSA。
-b 4096:指定密钥长度为4096位,更高的位数意味着更强的安全性。
-C "your_email@example.com":添加注释,通常是用户的电子邮件地址,有助于识别密钥
系统会提示输入文件名以保存密钥,默认保存路径为~/.ssh/id_rsa。还可以选择是否设置密码短语(passphrase),设置密码短语可以增加额外的安全层。 生成的密钥对包括:
id_rsa:私钥文件。
id_rsa.pub:公钥文件
2.上传密钥到服务器
2.1.使用ssh-copy-id上传
ssh-copy-id 是一个非常实用的命令行工具,用于将本地用户的公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中,从而实现免密登录。它简化了手动将公钥添加到远程服务器的过程,终端操作如下:
ssh-copy-id -i id_rsa.pub user_name@ip_address
2.2.手动修改服务器./ssh/authorized_keys,添加public_key
完成操作后提示: 此时在服务器的./ssh/authorized_keys文件中记录了公钥 后续ssh就免密了
3.仅可使用public key登录服务器(不可用密码)
在 /etc/ssh/sshd_config中配置一下字段
PubkeyAuthentication yes
PasswordAuthentication no
重启ssh服务
sudo systemctl restart sshd
完成后,客户端只能通过添加过public_key来访问服务器,该方法可以很好的限制登录用户
评论前必须登录!
注册