用户登录免密认证,ssh-keygen用法
时间: 2025-05-31 10:57:55 浏览: 17
### 使用 `ssh-keygen` 实现用户登录的免密认证
#### 1. 安装必要的软件
在开始配置之前,确保系统中已经安装了 `ssh-keygen` 和 `ssh-copy-id` 工具。如果没有安装,可以通过包管理器进行安装。例如,在基于 Red Hat 的系统上,可以使用以下命令:
```bash
yum install -y openssh-clients
```
对于 Debian 或 Ubuntu 系统,可以使用以下命令:
```bash
apt-get update && apt-get install -y openssh-client
```
#### 2. 创建公钥-私钥对
使用 `ssh-keygen` 命令生成一组新的 SSH 密钥对。推荐使用更安全的 Ed25519 算法替代传统的 RSA 算法[^4]。以下是具体命令:
```bash
ssh-keygen -t ed25519 -C "[email protected]"
```
在此过程中,系统会提示选择保存密钥的位置以及设置密码短语(passphrase)。如果不希望每次使用时都输入密码短语,可以直接按回车跳过。
#### 3. 复制公钥到远程服务器
为了实现免密登录,需要将本地生成的公钥复制到目标服务器的授权密钥列表中。最简单的方法是使用 `ssh-copy-id` 命令:
```bash
ssh-copy-id user@remote_host
```
其中 `user` 是目标服务器上的用户名,`remote_host` 是目标服务器的 IP 地址或域名。执行此命令后,工具会自动将本地的公钥追加到目标服务器的 `~/.ssh/authorized_keys` 文件中[^3]。
#### 4. 测试免密登录
完成以上步骤后,可以从本地计算机尝试无密码登录到目标服务器:
```bash
ssh user@remote_host
```
如果一切配置正确,应该无需再输入密码即可成功登录。
---
#### 注意事项
- **文件权限**: 确保目标服务器上的 `.ssh` 目录和相关文件具有正确的权限。`.ssh` 目录应为 700 权限,而 `authorized_keys` 文件应为 600 权限[^4]。
```bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
- **防火墙规则**: 检查目标服务器的防火墙是否允许来自本地计算机的 SSH 连接请求。
- **SSH 配置文件**: 可能需要调整 `/etc/ssh/sshd_config` 文件中的某些参数以启用公钥验证。重要的是确认以下几项未被禁用:
```plaintext
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
```
修改完成后记得重启 SSH 服务使更改生效:
```bash
systemctl restart sshd
```
---
阅读全文
相关推荐


















