xshell ssh的Public Key
时间: 2025-03-15 10:09:54 浏览: 62
### Xshell SSH Public Key 认证配置教程
#### 1. 创建 RSA 密钥对
在本地计算机上生成一对 RSA 密钥(私钥和公钥)。如果已经存在密钥,则可以直接跳过此步骤。
通过命令行工具或者 Xshell 自带的功能来完成:
```bash
ssh-keygen -t rsa -b 2048
```
上述命令会在指定路径下生成两个文件:`id_rsa` 和 `id_rsa.pub`。其中,`id_rsa` 是私钥,而 `id_rsa.pub` 则是公钥[^1]。
---
#### 2. 将公钥复制到目标服务器
将生成的公钥 (`id_rsa.pub`) 添加至远程服务器上的授权密钥列表中。可以通过以下方法实现:
##### 方法一:手动复制粘贴
- 登录到目标服务器。
- 打开或创建 `.ssh/authorized_keys` 文件:
```bash
mkdir ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
```
- 使用文本编辑器打开并粘贴公钥内容到该文件中。
##### 方法二:使用 `ssh-copy-id`
运行如下命令自动将公钥传输到服务器:
```bash
ssh-copy-id user@remote_host
```
这一步完成后,服务器会识别来自客户端的公钥认证请求[^3]。
---
#### 3. 修改服务器端 SSH 配置
为了支持基于公钥的身份验证,需调整 `/etc/ssh/sshd_config` 的相关内容。以下是几个重要的参数及其说明:
- **PubkeyAuthentication yes**: 启用公钥身份验证功能。
- **AuthorizedKeysFile .ssh/authorized_keys**: 指定存储公钥的位置。
- **PasswordAuthentication no**: 如果希望禁用密码登录,可将其设为 `no`。
- **ChallengeResponseAuthentication no**: 关闭挑战响应机制以减少不必要的安全风险。
修改完毕后重启 SSH 服务使更改生效:
```bash
sudo systemctl restart sshd
```
需要注意的是,某些情况下可能存在重复定义导致冲突的情况,因此建议逐一检查每项配置是否存在多次声明的现象,并保留唯一有效的那一处设置^。
---
#### 4. 在 Xshell 中导入私钥
回到 Xshell 客户端执行以下操作:
1. 右键点击左侧导航栏中的会话名称 -> 属性;
2. 转至“用户身份验证”标签页;
3. 勾选“公共密钥”,然后浏览找到之前保存下来的私钥文件(`id_rsa`);
4. 应用变更尝试重新连接测试是否成功切换到了无密码模式登陆状态。
至此整个流程结束应该能够顺利利用 public key 来代替传统账号密码方式进行访问控制管理了[^2].
---
### 注意事项
- 若遇到提示 “Host not found in server registry”, 很可能是因为 known_hosts 文件记录不匹配所致, 删除对应条目即可解决问题.
- 对于初次使用的设备来说还需要额外确认防火墙策略以及 SELinux 设置不会阻碍正常通讯过程.
阅读全文
相关推荐


















