使用 SSH 密钥登陆服务器的方法
生成密钥对
基本语法
ssh-keygen [选项]
常用选项
# 生成默认密钥(RSA,2048位)
ssh-keygen
# 指定加密类型(推荐 ed25519)
ssh-keygen -t ed25519
# 指定 RSA 位数(如果使用 RSA)
ssh-keygen -t rsa -b 4096
# 指定注释(通常是邮箱)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 指定文件名和路径
ssh-keygen -f ~/.ssh/my_key
# 不使用密码短语
ssh-keygen -t ed25519 -N ""
主要参数说明
-t # 指定加密类型(rsa, ed25519, dsa, ecdsa)
-b # 指定密钥长度(对 RSA 有效)
-C # 添加注释
-f # 指定密钥文件路径
-N # 指定新密码短语
-p # 修改密码短语
-y # 从私钥中生成公钥
实际使用示例
# 生成工作用密钥
ssh-keygen -t ed25519 -C "work@company.com" -f ~/.ssh/work_key
# 生成个人用密钥
ssh-keygen -t ed25519 -C "personal@gmail.com" -f ~/.ssh/personal_key
# 修改现有密钥的密码
ssh-keygen -p -f ~/.ssh/id_ed25519
# 从私钥生成公钥
ssh-keygen -y -f ~/.ssh/id_ed25519 > ~/.ssh/id_ed25519.pub
生成过程中的提示
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
# 输入保存密钥的文件路径,直接回车使用默认路径
Enter passphrase (empty for no passphrase):
# 输入密码短语,可以直接回车不设置
Enter same passphrase again:
# 确认密码短语
安全建议
- 推荐使用 ED25519 加密类型
- 如果使用 RSA,密钥长度至少 2048 位
- 重要场合建议设置密码短语
- 私钥权限设置为 600(chmod 600 私钥文件)
- 定期更换密钥
启动 SSH-Agent 并添加私钥
# Linux 或 macOS 启动 ssh-agent
eval "$(ssh-agent -s)"
# Windows 查看 ssh-agent 服务状态
Get-Service -Name ssh-agent
# 管理员权限启动 ssh-agent
Start-Service -Name ssh-agent
# 添加私钥到 ssh-agent
ssh-add ~/.ssh/id_ed25519
# 查看已添加的私钥
ssh-add -l
# 删除已管理的私钥
ssh-add -D
ssh-add -d <path_to_private_key>
配置 SSH config 文件
# 编辑或创建 ~/.ssh/config 文件
vim ~/.ssh/config
# 添加以下内容
Host github.com
IdentityFile ~/.ssh/custom_key
User git
Host hjranch.cn
IdentityFile ~/.ssh/custom_key
User your_username
设置正确的文件权限
# 设置 .ssh 目录权限
chmod 700 ~/.ssh
# 设置私钥权限
chmod 600 ~/.ssh/custom_key
# 设置公钥权限
chmod 644 ~/.ssh/custom_key.pub
# 设置 config 文件权限
chmod 600 ~/.ssh/config
部署公钥到服务器
# 方法1:使用 ssh-copy-id(如果服务器支持)
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
# 方法2:手动添加到服务器
# 登录到服务器,将公钥内容添加到 ~/.ssh/authorized_keys 文件中
测试连接
ssh user@host
ssh -T user@host
ssh -v user@host