Linux系统Linux设置SSH密钥

发布时间:2022-01-24 14:40:52 作者:清风
来源:亿速云 阅读:577
# 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算法密钥

2. 生成新密钥对

推荐使用更安全的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. 设置密钥密码(可选但推荐)

3. 查看生成的密钥

cat ~/.ssh/id_ed25519.pub

公钥内容格式为:算法 公钥内容 注释

配置SSH密钥认证

1. 将公钥上传到服务器

方法一:使用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"

2. 服务器端权限设置

确保正确的文件权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

3. 测试SSH连接

ssh -i ~/.ssh/id_ed25519 username@server_ip

高级配置技巧

1. 管理多个密钥

创建~/.ssh/config文件管理不同主机的密钥:

Host myserver
    HostName server_ip
    User username
    IdentityFile ~/.ssh/id_ed25519
    Port 2222

然后只需使用别名连接:

ssh myserver

2. 禁用密码登录(增强安全)

编辑服务器端SSH配置:

sudo nano /etc/ssh/sshd_config

修改以下参数:

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

重启SSH服务:

sudo systemctl restart sshd

3. 使用ssh-agent管理密钥

避免每次输入密钥密码:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

永久添加(适用于桌面环境):

echo "AddKeysToAgent yes" >> ~/.ssh/config

常见问题解决

1. 权限问题错误

典型错误消息:

Permissions 0644 for '~/.ssh/id_rsa' are too open.

解决方案:

chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub

2. 连接被拒绝

检查: 1. 服务器SSH服务是否运行:sudo systemctl status sshd 2. 防火墙设置:sudo ufw allow 22/tcp 3. 是否修改了默认端口(检查/etc/ssh/sshd_config中的Port

3. 密钥认证失败

排查步骤: 1. 确认公钥已正确添加到~/.ssh/authorized_keys 2. 检查服务器SELinux状态:sudo setsebool -P sshd_full_access on 3. 查看SSH详细日志:ssh -vvv username@server_ip

密钥管理最佳实践

  1. 定期轮换密钥:每6-12个月更换一次密钥
  2. 使用强密码:即使使用密钥也应设置密码
  3. 限制密钥使用:通过~/.ssh/authorized_keys的选项限制:
    
    from="192.168.1.*",command="/bin/backup" ssh-ed25519 AAAAC3Nz...
    
  4. 备份密钥:安全存储私钥备份(建议加密)
  5. 撤销丢失密钥:立即从服务器删除对应的公钥

密钥算法选择建议

算法 安全性 兼容性 推荐密钥长度
RSA 最好 至少4096位
ECDSA 较好 384位
Ed25519 最高 一般 256位

对于新系统推荐Ed25519,旧系统兼容选择RSA 4096。

总结

通过本文您已经学会了: 1. 生成安全的SSH密钥对 2. 配置服务器使用密钥认证 3. 管理多个服务器密钥 4. 解决常见连接问题 5. 实施密钥管理最佳实践

SSH密钥认证不仅能提高系统安全性,还能简化登录流程,是Linux系统管理员必备技能。

注意:私钥等同于密码,必须妥善保管!切勿将私钥分享给他人或上传到公开仓库。 “`

这篇指南涵盖了从基础到进阶的SSH密钥设置,共约1400字,采用Markdown格式编写,包含代码块、表格等结构化元素,便于阅读和实践操作。

推荐阅读:
  1. Linux的SSH服务之密钥验证登陆
  2. MAC SSH密钥登陆

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux ssh

上一篇:Linux系统如何设置时区

下一篇:Linux系统如何设置redis密码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》