Linux 配置密钥是现代系统管理和安全通信中的基础操作,通过非对称加密技术实现免密登录和数据安全传输,本文将详细介绍在 Linux 环境下生成、配置和使用 SSH 密钥的完整流程,涵盖密钥对生成、公钥上传、权限配置及常见问题排查等关键环节。

SSH 密钥对的基本概念
SSH(Secure Shell)密钥对由公钥(Public Key)和私钥(Private Key)组成,公钥存储在远程服务器上,私钥保存在本地客户端,通过数学关联性,私钥加密的内容仅能由对应公钥解密,从而实现身份验证和数据加密,相较于传统密码认证,密钥认证具有更高的安全性(私钥永不泄露)和便捷性(无需重复输入密码)。
生成 SSH 密钥对
在本地 Linux 终端中,使用 ssh-keygen 工具生成密钥对,默认采用 RSA 算法(推荐使用 2048 位或更高安全强度),执行以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
命令参数说明:
-t rsa:指定密钥类型为 RSA;-b 4096:设置密钥长度为 4096 位(安全强度更高);-C:添加注释,通常使用邮箱地址便于标识。
执行过程中,系统会提示:
- 密钥存储路径:默认为
~/.ssh/id_rsa,直接回车使用默认路径或自定义路径; - 密码短语(Passphrase):可选设置,用于加密私钥文件,增强安全性(若担心忘记可留空)。
生成完成后,~/.ssh/ 目录下会创建两个文件:
id_rsa:私钥(严格保密,切勿泄露);id_rsa.pub:公钥(需上传至远程服务器)。
将公钥上传至远程服务器
方法 1:使用 ssh-copy-id 命令(推荐)
该命令会自动将公钥追加到远程服务器的 ~/.ssh/authorized_keys 文件中,并设置正确权限:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_host
参数说明:
-i:指定公钥文件路径;username@remote_host:远程服务器用户名及 IP 地址或域名。
执行过程中需输入远程服务器密码,成功后即可免密登录。
方法 2:手动上传公钥
若 ssh-copy-id 不可用,可通过以下步骤手动操作:
- 在本地查看公钥内容:
cat ~/.ssh/id_rsa.pub
- 在远程服务器上创建 authorized_keys 文件:
mkdir -p ~/.ssh echo "公钥内容" >> ~/.ssh/authorized_keys
- 设置文件权限(关键步骤,权限错误会导致登录失败):
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
配置文件优化与权限管理
远程服务器 SSH 配置(/etc/ssh/sshd_config)
编辑服务器端 SSH 配置文件,优化安全策略:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
PermitRootLogin |
no |
禁止 root 用户直接通过 SSH 登录 |
PasswordAuthentication |
no |
禁用密码认证,仅允许密钥认证 |
PubkeyAuthentication |
yes |
启用公钥认证(默认开启) |
AuthorizedKeysFile |
.ssh/authorized_keys |
指定公钥存储路径 |
修改后重启 SSH 服务:
sudo systemctl restart sshd
本地 SSH 客户端配置(~/.ssh/config)
可创建或编辑 ~/.ssh/config 文件,为不同服务器配置别名和参数,

Host server1
HostName 192.168.1.100
User admin
IdentityFile ~/.ssh/id_rsa
Port 22
Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
常见问题排查
-
“Permission denied (publickey,password)”
- 检查远程服务器
~/.ssh/authorized_keys权限是否为600; - 确认
~/.ssh目录权限是否为700; - 验证公钥内容是否完整(末尾无多余空格或换行)。
- 检查远程服务器
-
“Could not resolve hostname”
- 检查
~/.ssh/config或命令中的服务器地址/域名是否正确。
- 检查
-
私钥 passphrase 忘记
- 可使用
ssh-keygen -p修改私钥密码,或通过ssh-agent管理密钥(避免重复输入)。
- 可使用
密钥的安全维护
- 定期轮换密钥:对于高安全性场景,建议每 3-6 个月重新生成密钥对;
- 备份私钥:将私钥文件备份至安全介质(如加密 U 盘),并设置文件权限为
400(仅所有者可读); - 禁用未使用的密钥:定期检查
~/.ssh/authorized_keys,移除不需要的公钥。
通过以上步骤,即可完成 Linux 环境下 SSH 密钥的安全配置,实现高效、安全的远程服务器管理,密钥认证不仅提升了操作效率,更从根本上降低了密码泄露带来的安全风险,是现代运维实践的必备技能。

















