PuTTY 是 Windows 上轻量且久经考验的 SSH 客户端,适合需要保存会话和图形化设置窗口的场景。本指南将带你连接 VPS Linux Infrawire,保持会话不断线,用 PuTTYgen 和 Pageant 改用密钥认证,并通过 pscp 传输文件。
📋 前提条件
- Windows 10 或 11。
- 一台已启动的 Linux VPS(Ubuntu 24.04、Debian 12、AlmaLinux 9 或 Rocky 9)。
- VPS 的 IP 地址和 root 密码:在客户中心即可找到 VPS 的 IP 和 root 密码。
- 已安装 PuTTY,其中包含
putty.exe、puttygen.exe、pageant.exe和pscp.exe。
如果你使用 winget,在 PowerShell 中一行命令即可安装:
PowerShellwinget install PuTTY.PuTTY
🔌 创建并保存会话
- 启动 PuTTY。在 Session 分类中,把
VPS_IP填入 Host Name (or IP address)。 - Port 保持
22(或你的自定义端口),Connection type 选择 SSH。 - 在 Saved Sessions 框中输入
myvps之类的名称,然后点击 Save。 - 可选:在 Connection > Data 中把 Auto-login username 填为
root,这样就不会再询问用户名。 - 回到 Session,选中
myvps,再次点击 Save,然后点击 Open。
首次连接时,PuTTY 会弹出 PuTTY Security Alert,显示服务器密钥指纹。只有在信任该服务器时才点击 Accept,密钥随后会记录在注册表中。
⏱️ 用 keepalive 防止掉线
空闲会话常被路由器和防火墙切断。打开 Connection,把 Seconds between keepalives 设为 30,回到 Session 再次保存 myvps。此后 PuTTY 每 30 秒发送一个小数据包。
🔑 用 PuTTYgen 生成密钥对
打开 PuTTYgen,密钥类型选择 EdDSA(Ed25519),在空白区域移动鼠标并点击 Generate。然后:
- 输入 Key passphrase 并确认。
- 点击 Save private key,把
.ppk文件保存在安全的地方。 - 复制 Public key for pasting into OpenSSH authorized_keys file 中的文本。
用密码登录,然后把公钥安装到 VPS(把复制的那一行粘贴进文件):
Bashmkdir -p ~/.ssh && chmod 700 ~/.ssh nano ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
在 PuTTY 中进入 Connection > SSH > Auth > Credentials,在 Private key file for authentication 中选择你的 .ppk,回到 Session 并保存。若要使用已有的 OpenSSH 私钥,请通过 PuTTYgen 转换:Conversions > Import key,再点击 Save private key。
🧩 用 Pageant 一次性加载密钥
Pageant 是 PuTTY 的密钥代理。运行 pageant.exe,它会驻留在通知区域,右键点击其图标,选择 Add Key,选中 .ppk 并输入一次密码短语。只要 Pageant 在运行,PuTTY 和 pscp 就会直接使用该密钥而不再询问。关闭 Pageant 即可让它忘记密钥。
📂 用 pscp 传输文件
pscp.exe 是 PuTTY 的命令行复制工具。注意端口参数是大写的 -P。在 PowerShell 中:
PowerShell# 上传文件 pscp -P 22 C:\Users\USER\Documents\site.zip root@VPS_IP:/root/ # 下载文件 pscp -P 22 root@VPS_IP:/var/log/syslog C:\Users\USER\Downloads\ # 上传整个文件夹 pscp -r -P 22 C:\Users\USER\project root@VPS_IP:/root/ # 使用指定密钥 pscp -i C:\keys\vps.ppk site.zip root@VPS_IP:/root/
如果找不到 pscp,请使用完整路径调用,例如 & 'C:\Program Files\PuTTY\pscp.exe'。
✅ 验证连接
登录后,确认使用的是密钥登录,并且位于正确的机器上:
Bashwhoami hostname cat /etc/os-release sudo grep 'Accepted publickey' /var/log/auth.log | tail -n 3
最后一条命令适用于 Ubuntu/Debian;在 AlmaLinux/Rocky 上请使用 sudo journalctl -u sshd | grep Accepted | tail -n 3。PuTTY 标题栏会显示已连接的会话,Event Log(右键点击标题栏)则列出认证的各个步骤。
🛠️ 故障排查
Network error: Connection timed out / refused。 检查 VPS_IP 和端口、VPS 是否已启动,以及 SSH 是否在监听(Ubuntu/Debian 上用 sudo systemctl status ssh,AlmaLinux/Rocky 上为 sshd)。本地防火墙或公司网络也可能封锁该端口。
Server refused our key / Disconnected: No supported authentication methods available。 公钥没有粘贴为单独一行、用户名不对,或权限过于宽松。请重新检查 authorized_keys,执行 chmod 700 ~/.ssh 和 chmod 600 ~/.ssh/authorized_keys,并确认 .ppk 与公钥匹配。
Unable to use key file (OpenSSH SSH-2 private key)。 PuTTY 无法读取该格式。请用 PuTTYgen 转换密钥(Conversions > Import key),或把 PuTTY 升级到最新版本。
会话几分钟后卡死。 按上文设置 keepalive 间隔。
🚀 现在 PuTTY 已配置好保存的会话、密钥登录和文件传输。下一步:密钥可用后,关闭密码登录。