VPS 买好了,打开 SSH 工具却是一屏英文加一个安全弹窗,第一次用确实容易卡住。其实登录这件事拆开就三步:连上 VPS、让连接走代理、换成密钥登录。只想用密码登录,看完密码登录部分就够了。

先准备好服务商给的 IP、SSH 端口和登录用户名。Windows 上用 KiTTYPortable,生成密钥用 PuTTYgen,服务器按常见的 Debian、Ubuntu 和 OpenSSH 环境来。注意:图里的端口只是示例,别照抄。
工具官方入口:KiTTY 官方项目、PuTTY / PuTTYgen 官方下载
一、填连接信息。打开 KiTTY,在 Session 页填 Host Name(VPS 的 IP)、Port(SSH 端口,常见是 22,以管理后台为准)、Connection type 选 SSH。有几台 VPS 的,在 Saved Sessions 里起个自己认得的名字。想走代理的先别点 Open。

二、让 SSH 走代理(不需要就跳过)。先确认本机代理软件已启动,且访问这台 VPS 会走选好的节点。KiTTY 左侧进 Connection → Proxy:这里填的是本机代理软件的本地监听端口,不是节点服务器的远端端口。代理就在本机时,Proxy hostname 填 127.0.0.1,端口填代理软件实际提供的本地端口,HTTP 代理选 HTTP,SOCKS5 选 SOCKS 5,混合端口按实际协议选。代理在路由器或另一台设备上时,填那台设备可访问的地址。

还有一层容易漏:连接交给了本地代理软件,软件自己的规则仍可能让它直连。点 Open 之前,先确认目标 VPS 命中了代理规则。

三、核对身份再登录。回 Session 保存,点 Open。第一次连接弹出的窗口是让你确认服务器主机指纹,先和服务商提供的指纹核对,一致再点 Accept。看到 login as: 输入用户名(可能是 root、ubuntu 或 debian,以后台或邮件为准),再输密码——输入时屏幕不显示字符是正常的,输完按回车。

想验证这次连接是不是真的走了代理,可以在会话里执行 printf ‘%s\n’ “$SSH_CONNECTION”,结果里的第一个 IP 就是 VPS 看到的连接来源,和预期的代理出口对一下。这验证的是这次 SSH 连接,不等于浏览器也走了同一条线路,更不等于匿名。只需要密码登录的,到这里已经能用了。

四、生成一对密钥。旧窗口先留着,新密钥没试通之前别关这个入口。用 PuTTYgen 生成 Ed25519 密钥:Type 里选 EdDSA、曲线选 Ed25519,点 Generate 并按提示移动鼠标。生成后写个认得出的 Key comment,给私钥设个 passphrase(和 VPS 登录密码是两回事),点 Save private key 存为 .ppk(比如 my-vps.ppk),自己留好备份,私钥不要传给别人。

接着复制上方 Public key for pasting into OpenSSH authorized_keys file 文本框里的完整内容(以 ssh-ed25519 开头),不要漏、不要自己加换行,PuTTYgen 窗口先留着。

五、把公钥加到 VPS。先用 sudo /usr/sbin/sshd -T | grep -E ‘^(pubkeyauthentication|authorizedkeysfile) ‘ 确认 pubkeyauthentication 是 yes,且路径包含 .ssh/authorized_keys。建目录并备份旧文件:mkdir -p ~/.ssh,chmod 700 ~/.ssh,再用 nano 打开 ~/.ssh/authorized_keys,把公钥粘贴到新的一行(已有公钥要保留),保存后 chmod 600 ~/.ssh/authorized_keys。一般不用重启 SSH,下次新连接就会读取。注意公钥要加到登录的那个用户的目录里。

六、新窗口试一次。另开一个 KiTTY 窗口加载刚才的会话,进 Connection → SSH → Auth,在 Private key file for authentication 里选刚才的 .ppk。测试时先取消 Attempt authentication using Pageant,也先关闭 SSH 连接共享。回 Session 保存再 Open,用户名要和加公钥的用户一致,出现口令提示时输的是第 4 步设的 passphrase。能直接登录、不用再输 VPS 密码,才算密钥这条路通了;如果退回去要密码,先查私钥选错、用户名不一致、公钥复制不完整或文件权限的问题。

新窗口确认能登录后,再收起旧连接。密码认证如果还开着,别人仍能尝试密码登录,是否关闭密码认证,等确认新连接和后台控制台都能用之后再单独处理。

补充:公钥认证没开怎么办。已经显示 yes 的跳过。OpenSSH 很多选项采用先读到的值,Ubuntu 默认还会先读 sshd_config.d 里的片段,所以不能保证在主文件末尾加一行 yes 就生效,碰到 Match 块还要确认它限制的用户或来源。只改全局部分的 no 之前先备份,按实际生效文件来改,不要顺手改端口、密码认证或 root 登录权限。

补充:放一会儿就掉线。SSH 没有统一的“闲置 5 分钟必断”规则,可能和网络设备、代理或服务器策略有关。空闲常掉线的话,可以在 Connection → Seconds between keepalives 试填 30 再保存,它能帮部分空闲连接保持,但修不了网络中断,也绕不过所有服务器超时策略。
