WindTerm ssh 连接服务器流程记录.md

# WindTerm ssh 连接服务器流程记录

WindTerm 是一个开源免费的SSH工具,若没有使用XShell,可尝试该工具

> github地址:https://github.com/kingToolbox/WindTerm

流程:

```
个人电脑生成密钥对
→ 私钥留在个人电脑
→ 只把公钥写入 VPS
→ WindTerm 使用私钥登录
```

## 一、使用密码登录 VPS

打开 WindTerm,新建 SSH 会话:

```
协议:SSH
主机:VPS 公网 IP
端口:22
用户名:你的 VPS 账号,例如 root
```

点击连接,首次连接时确认主机指纹,然后输入 VPS 密码

成功后会看到类似:

```
root@server:~#
```

先不要关闭这个会话,后面需要用它写入公钥

## 二、在个人电脑生成 SSH 密钥

在 Windows 中打开 PowerShell,执行:

```powershell
ssh-keygen -t ed25519 -a 64 -C "personal-vps"
```

>各参数含义如下:
>
>| 参数 | 作用 |
>| ------------------- | ------------------------------------------------------------ |
>| `ssh-keygen` | SSH 密钥生成工具。 |
>| `-t ed25519` | 指定密钥算法为 **Ed25519**(推荐,速度快、安全性高、密钥更短)。 |
>| `-a 64` | KDF(密钥派生函数)迭代次数为 **64**,提高私钥口令的破解难度,增强安全性。 |
>| `-C "personal-vps"` | 为公钥添加注释(Comment),方便识别该密钥用途,不影响认证。 |
>

执行后通常会依次询问:

保存位置:

```
Enter file in which to save the key
```

使用默认路径,直接按 Enter:

```
C:\Users\你的用户名\.ssh\id_ed25519
```

> 若出现:
>
> ```
> C:\Users\你的用户名\.ssh\id_ed25519 already exists.
> Overwrite (y/n)?
> ```
>
> **一个 `.ssh` 目录可以存放多个 SSH 密钥对**,只是**默认文件名**只有一个 `id_ed25519`,表示当前已经存在一个默认名称的 Ed25519 密钥
>
> 推荐做法:每个用途对应一个密钥
>
> 例如:
>
> ```
> C:\Users\用户名\.ssh\
> ├── id_ed25519 # 默认密钥
> ├── id_ed25519.pub
> ├── github-personal # GitHub 个人账号
> ├── github-personal.pub
> ├── ovh-vps # OVH VPS
> ├── ovh-vps.pub
> └── config
> ```
>
> 这种方式最清晰,也便于后续管理
>
> ==在提示时不要直接回车,而是输入新的文件名,例如:==
>
> ```
>Enter file in which to save the key:
> C:\Users\用户名\.ssh\文件名
> ```
>

随后提示:

```
Enter passphrase
```

建议为私钥设置一个独立口令。该口令用于保护个人电脑上的私钥,即使私钥文件被复制,对方仍不能直接使用。

设置完成后提示秘钥放置位置,如:

```
Your public key has been saved in C:\Users\用户名/.ssh/vps_ed25519.pub
```

打开该文件夹存在下述两个文件:

```
vps_ed25519 私钥,只能保存在个人电脑
vps_ed25519.pub 公钥,可以上传到 VPS
```

注意:`.pub` 文件是公钥;没有 `.pub` 后缀的文件是私钥,不能发送给别人,也不能上传到 VPS。

## 三、查看并复制公钥

在 Windows PowerShell 中执行:

> 将 【vps_ed25519】替换为实际生成的公钥名

```
Get-Content "$env:USERPROFILE\.ssh\【vps_ed25519】.pub"
```

会输出一整行内容,例如:

```
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... personal-vps
```

完整复制这一行,不要换行,也不要漏掉开头的 `ssh-ed25519`。

## 四、把公钥写入 VPS

回到之前已经通过密码登录的 WindTerm 窗口。

### 1. 确认当前用户

执行:

```
whoami
```

公钥必须写入你以后准备登录的用户目录。

例如:

  • 使用 `root` 登录,公钥写入位置 `/root/.ssh/authorized_keys`
  • 使用 `ubuntu` 登录,公钥写入位置 `/home/ubuntu/.ssh/authorized_keys`

### 2. 创建 SSH 配置目录

执行:

```
mkdir -p ~/.ssh
chmod 700 ~/.ssh
```

### 3. 写入公钥

执行:

```
vi ~/.ssh/authorized_keys
```

将刚才复制的一整行公钥粘贴进去

### 4. 修正文件权限

执行:

```
chmod 600 ~/.ssh/authorized_keys
```

### 5. 检查公钥是否写入

执行:

```
cat ~/.ssh/authorized_keys
```

确认里面存在完整的一行:

```
ssh-ed25519 AAAA... personal-vps
```

并且于 powershell 中生成的公钥一致

## 五、在 WindTerm 中配置私钥

不要关闭当前通过密码登录的会话。

在 WindTerm 中复制或编辑 VPS 会话,填写:

![image-20260822224833061](https://oss.tilex.world/d/blog-images/2026/08/22/image-20260822224833061.png?sign=rwazEQCQ2wiIBMMHynEVZ8hFvojtS9ow0tuYt8t_oWY=:0)

```
用户名:写入公钥的 VPS 用户(root/其它用户)
```

然后在会话的 SSH 身份验证设置中:

  1. 选择“公钥”或“Public Key”认证。
  2. 私钥文件选择:

```
C:\Users\你的用户名\.ssh\vps_ed25519
```

如果使用默认文件名,则选择:

```
C:\Users\你的用户名\.ssh\id_ed25519
```

  1. 如果生成密钥时设置了口令,连接时输入的是**私钥口令**,不再是 VPS 用户密码。
  2. 保存会话。

不同 WindTerm 版本的选项名称可能略有差异,一般位于:

```
会话设置
→ SSH
→ 身份验证
→ 公钥
→ 私钥文件
```

注意不要选择 `.pub` 文件。WindTerm 需要使用的是没有 `.pub` 后缀的私钥文件。

## 特殊情况:WindTerm 无法选择 onekey

![image-20260826194104396](https://oss.tilex.world/d/blog-images/2026/08/26/image-20260826194104396.png?sign=SSJS-xMAmA3rJk7Vihpnr-sbAcI5Kn-wtbzGZRjLxeE=:0)

点击设置(上图右侧红框所框住的icon),进行添加即可

![image-20260822225646373](https://oss.tilex.world/d/blog-images/2026/08/22/image-20260822225646373.png?sign=tBh66Ds8tKtncfERUAiSHTeUU-e8-VcEPcqoV_h_mzU=:0)

添加后继续第五步即可

## 六、测试密钥登录

保持原来的密码登录窗口不要关闭(避免连接不上),另外新开一个 WindTerm 标签页,连接刚配置的会话。

成功时:

  • 不再要求输入 VPS 账号密码;
  • 如果私钥设置了口令,会要求输入私钥口令;
  • 最终出现服务器终端提示符。

登录后执行:

```
whoami
```

确认当前用户正确。

建议再测试一次:

1. 主动退出新会话:

```
exit
```

  1. 重新双击 WindTerm 中保存的会话。
  2. 确认仍能通过私钥登录。

至少成功测试两次,才能考虑关闭密码登录。

## 七、可选:关闭 SSH 密码登录

这是安全加固步骤,不要在密钥尚未验证成功时操作!!!

首先查看 SSH 实际配置:

```bash
sudo sshd -T | grep -Ei 'passwordauthentication|pubkeyauthentication|permitrootlogin'
```

默认情况返回:

```text
# 允许 root 用户登录
PermitRootLogin yes

# 启用公钥认证
PubkeyAuthentication yes

# 启用密码认证
PasswordAuthentication yes
```

SSH 配置文件通常是:

```text
/etc/ssh/sshd_config
```

不过部分系统还会读取:

```text
/etc/ssh/sshd_config.d/*.conf
```

不同系统的配置结构不同。修改前建议先备份:

```bash
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
```

编辑配置:

```bash
sudo vi /etc/ssh/sshd_config
```

设置或修改:

```text
# 启用公钥认证
PubkeyAuthentication yes

# 禁用密码认证
PasswordAuthentication no
```

### 配置未生效?

若修改后执行:

```bash
sudo sshd -T | grep -Ei 'passwordauthentication|pubkeyauthentication|permitrootlogin'
```

仍显示:

```text
PasswordAuthentication yes
```

则可能是 `/etc/ssh/sshd_config.d/*.conf` 中的配置覆盖了主配置文件。

排查所有相关配置:

```bash
sudo grep -RniE '^[[:space:]]*(PasswordAuthentication|PubkeyAuthentication|PermitRootLogin)' \
/etc/ssh/sshd_config /etc/ssh/sshd_config.d/
```

找到设置为 `PasswordAuthentication yes` 的配置文件后,将其修改为:

```text
PasswordAuthentication no
```

随后验证配置:

```bash
sudo sshd -t
```

无输出表示配置正确,然后重新加载 SSH 服务:

```bash
sudo systemctl reload ssh
```

若提示服务不存在,可先查看服务名称:

```bash
systemctl status ssh
```

部分发行版服务名为:

```bash
sudo systemctl reload sshd
```

再次确认最终生效配置:

```bash
sudo sshd -T | grep -Ei 'passwordauthentication|pubkeyauthentication|permitrootlogin'
```

应看到:

```text
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication no
```

### 误修改恢复

可通过备份文件恢复:

```bash
sudo cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config
```

### vi 快速定位

快速定位到 `PasswordAuthentication`:

按 `Esc` 后输入:

```vim
/PasswordAuthentication
```

按 **Enter** 开始搜索,可使用下面的常用快捷键:

| 操作 | 命令 |
| ---------- | --------- |
| 向下查找 | `/关键字` |
| 向上查找 | `?关键字` |
| 下一个匹配 | `n` |
| 上一个匹配 | `N` |

> 不要立刻关闭当前 SSH 会话。重新打开一个 WindTerm(或其他 SSH 客户端)窗口,确认可以通过密钥正常登录后,再关闭旧会话,避免因配置错误导致无法重新连接服务器

## 八、后续日常登录

以后登录流程是:

```
打开 WindTerm
→ 双击已保存的 VPS 会话
→ WindTerm 读取本机私钥
→ 必要时输入私钥口令
→ VPS 使用 authorized_keys 中的公钥验证
→ 登录成功
```

文件应分别存放:

| 文件 | 存放位置 | 是否可以公开 |
| ---------------------- | -------------- | ------------------ |
| 私钥 `vps_ed25519` | 个人电脑 | 不可以 |
| 公钥 `vps_ed25519.pub` | 个人电脑和 VPS | 可以 |
| `authorized_keys` | VPS | 包含允许登录的公钥 |

还应备份私钥到一个可信的加密介质或密码管理器附件中。若个人电脑损坏且私钥没有备份,同时密码登录已经关闭,就只能通过云厂商控制台恢复访问

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论