核心是将本地生成的公钥内容追加至目标服务器~/.ssh/authorized_keys文件,确保目录权限700、文件权限600;推荐用ssh-keygen -t ed25519生成密钥对,再用ssh-copy-id自动部署。

生成并配置 authorized_keys 的核心是:在本地生成密钥对,把公钥内容(不是文件)追加到目标服务器的 ~/.ssh/authorized_keys 文件中,并确保权限正确。
生成 SSH 密钥对
在你将用来发起 SSH 连接的机器(比如你的跳板机或开发机)上执行:
- 运行
ssh-keygen -t ed25519 -C "your_email@example.com"(推荐 ed25519,更安全;也可用-t rsa -b 4096) - 按回车接受默认路径(通常是
~/.ssh/id_ed25519),如需设密码可输入,否则直接回车两次 - 完成后会生成两个文件:
id_ed25519(私钥,严格保密)和id_ed25519.pub(公钥,用于分发)
准备目标服务器的 .ssh 目录和 authorized_keys
登录目标服务器(即你想免密登录进去的那台),执行:
-
mkdir -p ~/.ssh—— 确保目录存在 -
chmod 700 ~/.ssh—— 目录权限必须是 700 -
touch ~/.ssh/authorized_keys—— 创建文件(若不存在) -
chmod 600 ~/.ssh/authorized_keys—— 文件权限必须是 600(这是关键,否则 SSH 拒绝读取)
把公钥内容写入 authorized_keys
有三种常用方式,任选其一:
-
推荐用
ssh-copy-id:在本地机器运行ssh-copy-id user@target_ip,它会自动完成权限设置和追加 -
手动复制内容:在本地运行
cat ~/.ssh/id_ed25519.pub,复制整行输出;登录目标服务器后,用echo "复制的内容" >> ~/.ssh/authorized_keys -
用 scp + cat:先
scp ~/.ssh/id_ed25519.pub user@target_ip:/tmp/,再登录目标机执行cat /tmp/id_ed25519.pub >> ~/.ssh/authorized_keys
验证与补充检查
完成之后别急着关终端,先测试:
- 在本地执行
ssh -o PreferredAuthentications=publickey user@target_ip,强制走密钥认证 - 如果失败,检查目标服务器的
/etc/ssh/sshd_config是否启用:PubkeyAuthentication yes和AuthorizedKeysFile .ssh/authorized_keys - 确认目标用户家目录权限不能太开放(如
chmod 755 ~可以,777会拒绝) - 私钥文件在本地也要保持
600权限:chmod 600 ~/.ssh/id_ed25519


















