生成Ed25519密钥对并配置SSH快捷登录的完整指南
1. 生成Ed25519密钥对(本地操作)
生成密钥
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/my_ed25519_key
- 说明:
-t ed25519
:指定密钥类型为Ed25519。-C "注释"
:可选注释,用于标识密钥用途(如邮箱)。-f ~/.ssh/my_ed25519_key
:指定密钥文件名(默认是id_ed25519
,这里自定义为my_ed25519_key
)。
- 操作提示:
- 按回车保存到默认路径。
- 输入密钥密码(可选但建议设置,如直接回车跳过)。
检查生成的密钥
ls -l ~/.ssh
应看到两个文件:
my_ed25519_key
:私钥(权限必须为600
)。my_ed25519_key.pub
:公钥(可自由分发)。
2. 将公钥上传到服务器
方法一:使用 ssh-copy-id
(需服务器允许密码登录)
ssh-copy-id -i ~/.ssh/my_ed25519_key.pub -p 22 user@server_ip
- 参数解释:
-i
:指定公钥路径。-p 22
:如果服务器SSH端口不是默认的22,替换为实际端口(如8022
)。
- 输入服务器用户密码完成上传。
方法二:手动上传(更安全)
- 复制公钥内容:
cat ~/.ssh/my_ed25519_key.pub
- 登录服务器并写入公钥:
ssh -p 22 user@server_ip # 替换端口和用户 mkdir -p ~/.ssh echo "粘贴公钥内容" >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys exit
3. 配置服务器SSH安全设置(服务器操作)
- 编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
- 修改以下参数:
PubkeyAuthentication yes # 启用密钥登录 PasswordAuthentication no # 禁用密码登录(确保密钥可用后再禁用!) PermitRootLogin no # 禁止root直接登录(可选) Port 55522 # 修改默认SSH端口(可选,需同步防火墙)
- 重启SSH服务:
sudo systemctl restart sshd
4. 配置本地SSH别名快捷登录(本地操作)
- 编辑本地SSH配置文件:
nano ~/.ssh/config
- 添加以下配置(根据实际参数修改):
Host server1 # 自定义别名(如 myserver、aws等) HostName 123.45.67.89 # 服务器IP或域名 User ubuntu # 登录用户名(如 root、ec2-user) Port 55522 # SSH端口(默认22) IdentityFile ~/.ssh/my_ed25519_key # 私钥路径 IdentitiesOnly yes # 强制使用指定密钥
- 保存并设置权限:
chmod 600 ~/.ssh/config
5. 测试快捷登录
ssh server1
- 如果私钥有密码,首次登录需输入密钥密码。
- 成功登录即表示配置完成!
6. 其他实用技巧
使用 ssh-agent
管理密钥密码
eval $(ssh-agent) # 启动ssh-agent
ssh-add ~/.ssh/my_ed25519_key # 添加私钥到缓存(需输入一次密码)
之后使用 ssh server1
无需重复输入密码。
使用别名操作文件传输
scp file.txt server1:/path/ # 上传文件
rsync -avz folder/ server1:/path/ # 同步文件夹
多服务器配置示例
Host server1
HostName 192.168.1.100
User alice
Port 22
IdentityFile ~/.ssh/key1
Host server2
HostName example.com
User bob
Port 55522
IdentityFile ~/.ssh/key2
故障排查
- 权限问题:
chmod 600 ~/.ssh/my_ed25519_key # 本地私钥权限 chmod 700 ~/.ssh # 本地.ssh目录权限
- 连接失败:
- 检查服务器防火墙是否开放端口:
sudo ufw allow 55522 # 若使用UFW
- 查看SSH日志:
tail -f /var/log/auth.log # Linux服务器
- 检查服务器防火墙是否开放端口:
- 调试SSH连接:
ssh -v server1 # 显示详细连接过程
安全建议
- 禁用密码登录:确保服务器已设置
PasswordAuthentication no
。 - 定期更换密钥:每3-6个月生成新密钥对。
- 备份私钥:将私钥存储在加密的USB或密码管理器中。
按照以上步骤,即可实现从生成Ed25519密钥到一键快捷登录的全部流程!