背景图片

使用 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: 
# 确认密码短语

安全建议

启动 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