← 返回文章流

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 s

作者:Tilex作者主页
在原博客阅读全文 (新标签页打开)

以上内容来自博客订阅源,版权归原作者。关注作者后可以在 关注列表 第一时间查看作者文章。

一起聊聊 0

尊重不同观点

还没有评论。欢迎分享第一个想法。

RSS SUBSCRIPTIONS

选择 RSS 订阅

把博客汇的文章添加到你常用的阅读器。

关注文章 RSS 订阅本订阅需要登录后使用