Linux设置SSH免密登入
时间: 2025-07-22 15:27:12 浏览: 25
<think>我们正在配置Linux系统的SSH免密登录。根据引用内容,免密登录的配置主要涉及生成SSH密钥对,并将公钥复制到目标服务器的authorized_keys文件中。以下是详细步骤:
1. **生成SSH密钥对**:
在本地机器上打开终端,执行以下命令生成RSA密钥对:
```bash
ssh-keygen -t rsa
```
按照提示,可以设置密钥的保存路径(默认是`~/.ssh/id_rsa`)和密码(如果不想设置密码,直接按回车跳过)。生成后,在`~/.ssh`目录下会生成两个文件:`id_rsa`(私钥)和`id_rsa.pub`(公钥)[^1][^4]。
2. **将公钥复制到目标服务器**:
有两种常用方法:
- **使用`ssh-copy-id`命令**(推荐):
执行以下命令,将公钥复制到目标服务器(将`username`替换为目标服务器的用户名,`hostname`替换为目标服务器的IP或主机名):
```bash
ssh-copy-id username@hostname
```
执行后需要输入目标服务器上对应用户的密码。成功后,公钥会被添加到目标服务器用户家目录下的`~/.ssh/authorized_keys`文件中[^1][^3]。
- **手动复制**:
如果无法使用`ssh-copy-id`,可以手动操作:
1. 将本地公钥文件(`id_rsa.pub`)的内容复制到剪贴板。
2. 登录目标服务器,进入用户家目录下的`.ssh`目录(如果不存在则创建):
```bash
mkdir -p ~/.ssh
chmod 700 ~/.ssh
```
3. 将公钥内容追加到`authorized_keys`文件中:
```bash
echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
```
4. 设置`authorized_keys`文件的权限:
```bash
chmod 600 ~/.ssh/authorized_keys
```
注意:权限设置非常重要,否则可能导致免密登录失败[^4]。
3. **测试免密登录**:
在本地机器上执行:
```bash
ssh username@hostname
```
如果配置成功,将无需输入密码直接登录到目标服务器[^3]。
4. **权限问题**:
如果遇到权限问题,确保目标服务器上相关文件和目录的权限正确:
- 用户家目录权限:`700`(`drwx------`)
- `.ssh`目录权限:`700`(`drwx------`)
- `authorized_keys`文件权限:`600`(`-rw-------`)[^4]。
5. **多台服务器配置**:
如果需要在多台服务器上配置免密登录,重复执行上述步骤(使用`ssh-copy-id`或手动复制)到每一台服务器即可[^1]。
注意:如果使用非默认的密钥文件(比如自定义名称的密钥),在`ssh-copy-id`时可能需要通过`-i`选项指定公钥文件,例如:
```bash
ssh-copy-id -i ~/.ssh/my_key.pub username@hostname
```
通过以上步骤,即可实现从本地机器到目标服务器的SSH免密登录。
§§相关问题§§
1. 如何为不同的服务器使用不同的SSH密钥?
2. 配置SSH免密登录后仍然需要输入密码,可能是什么原因?
3. 如何禁用SSH的密码登录以提高安全性?</think>### 如何在Linux上配置SSH免密登录
以下是配置SSH免密登录的完整步骤,适用于Linux系统:
#### 1️⃣ 生成SSH密钥对(本地机器)
```bash
ssh-keygen -t rsa -b 4096
```
- 按3次回车(默认路径+不设密码)
- 生成文件:
- `~/.ssh/id_rsa`(私钥,需保密)[^1]
- `~/.ssh/id_rsa.pub`(公钥)[^1]
#### 2️⃣ 复制公钥到目标服务器
**方法一:使用`ssh-copy-id`(推荐)**
```bash
ssh-copy-id username@server-ip
```
- 示例:`ssh-copy-id [email protected]`
- 需输入目标服务器密码[^1][^3]
**方法二:手动复制**
```bash
# 本地操作
cat ~/.ssh/id_rsa.pub | ssh username@server-ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
```
#### 3️⃣ 设置文件权限(目标服务器)
登录目标服务器执行:
```bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
```
⚠️ **权限错误是免密登录失败的常见原因** [^4]
#### 4️⃣ 测试免密登录
```bash
ssh username@server-ip
```
成功将直接进入服务器终端,无需密码[^3]
---
### 关键目录与文件说明
| 文件/目录 | 作用 |
|-----------|------|
| `~/.ssh/` | SSH配置目录 |
| `id_rsa` | 私钥(本地存储) |
| `id_rsa.pub` | 公钥(复制到服务器) |
| `authorized_keys` | 存储授权公钥(目标服务器)[^1] |
| `known_hosts` | 记录访问过的主机公钥[^1] |
---
### 常见问题解决
1. **权限错误**:
```bash
sudo chown -R $USER:$USER ~/.ssh # 修复属主
sudo chmod 700 ~/.ssh # 目录权限
sudo chmod 600 ~/.ssh/* # 文件权限[^2][^4]
```
2. **多服务器配置**:
```bash
# 批量配置多台服务器
for host in hadoop102 hadoop103 hadoop104; do
ssh-copy-id user@$host
done
```
3. **非默认端口配置**:
```bash
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 user@server-ip
```
---
### 免密登录原理
SSH免密登录基于非对称加密:
1. 客户端用私钥签名
2. 服务器用`authorized_keys`中的公钥验证
3. 验证通过即建立连接[^5]
阅读全文
相关推荐
















