您好,登录后才能下订单哦!
# Linux系统设置SSH密钥指南
## 什么是SSH密钥?
SSH(Secure Shell)密钥是用于身份验证的加密密钥对,由公钥(public key)和私钥(private key)组成。相比传统密码登录,SSH密钥提供了更高的安全性和便利性:
1. **非对称加密**:公钥用于加密,私钥用于解密
2. **免密码登录**:配置后可直接访问服务器
3. **抗暴力破解**:无法通过穷举法破解密钥认证
## 生成SSH密钥对
### 1. 检查现有密钥
在生成新密钥前,先检查是否已存在密钥:
```bash
ls -al ~/.ssh
常见密钥文件:
- id_rsa
/ id_rsa.pub
:RSA算法密钥
- id_ecdsa
/ id_ecdsa.pub
:ECDSA算法密钥
- id_ed25519
/ id_ed25519.pub
:Ed25519算法密钥
推荐使用更安全的Ed25519算法:
ssh-keygen -t ed25519 -C "your_email@example.com"
或使用传统RSA算法(至少4096位):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
生成过程会提示: 1. 选择密钥保存路径(默认~/.ssh/id_algorithm) 2. 设置密钥密码(可选但推荐)
cat ~/.ssh/id_ed25519.pub
公钥内容格式为:算法 公钥内容 注释
方法一:使用ssh-copy-id
(最简单)
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip
方法二:手动复制(当ssh-copy-id不可用时)
cat ~/.ssh/id_ed25519.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
确保正确的文件权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh -i ~/.ssh/id_ed25519 username@server_ip
创建~/.ssh/config
文件管理不同主机的密钥:
Host myserver
HostName server_ip
User username
IdentityFile ~/.ssh/id_ed25519
Port 2222
然后只需使用别名连接:
ssh myserver
编辑服务器端SSH配置:
sudo nano /etc/ssh/sshd_config
修改以下参数:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
重启SSH服务:
sudo systemctl restart sshd
避免每次输入密钥密码:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
永久添加(适用于桌面环境):
echo "AddKeysToAgent yes" >> ~/.ssh/config
典型错误消息:
Permissions 0644 for '~/.ssh/id_rsa' are too open.
解决方案:
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub
检查:
1. 服务器SSH服务是否运行:sudo systemctl status sshd
2. 防火墙设置:sudo ufw allow 22/tcp
3. 是否修改了默认端口(检查/etc/ssh/sshd_config
中的Port
)
排查步骤:
1. 确认公钥已正确添加到~/.ssh/authorized_keys
2. 检查服务器SELinux状态:sudo setsebool -P sshd_full_access on
3. 查看SSH详细日志:ssh -vvv username@server_ip
~/.ssh/authorized_keys
的选项限制:
from="192.168.1.*",command="/bin/backup" ssh-ed25519 AAAAC3Nz...
算法 | 安全性 | 兼容性 | 推荐密钥长度 |
---|---|---|---|
RSA | 高 | 最好 | 至少4096位 |
ECDSA | 高 | 较好 | 384位 |
Ed25519 | 最高 | 一般 | 256位 |
对于新系统推荐Ed25519,旧系统兼容选择RSA 4096。
通过本文您已经学会了: 1. 生成安全的SSH密钥对 2. 配置服务器使用密钥认证 3. 管理多个服务器密钥 4. 解决常见连接问题 5. 实施密钥管理最佳实践
SSH密钥认证不仅能提高系统安全性,还能简化登录流程,是Linux系统管理员必备技能。
注意:私钥等同于密码,必须妥善保管!切勿将私钥分享给他人或上传到公开仓库。 “`
这篇指南涵盖了从基础到进阶的SSH密钥设置,共约1400字,采用Markdown格式编写,包含代码块、表格等结构化元素,便于阅读和实践操作。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。