Windows连接Linux服务器需四步:启用OpenSSH客户端、确保Linux运行sshd服务、验证网络与22端口连通、用密码首次登录;之后可配置ed25519密钥实现免密登录。

要在Windows上稳定连接Linux服务器执行运维、开发或文件传输任务,必须先确保客户端可用、服务端就绪、网络通达、认证方式正确——四个环节缺一不可,任意一步卡住都会导致Connection refused、Permission denied或No route to host等错误。
确认Windows已启用OpenSSH客户端
Windows 10 1809及之后版本、Windows 11均内置OpenSSH客户端,但默认可能未启用。不能跳过这步直接敲ssh命令,否则会报“ssh不是内部或外部命令”。
按下 Win + R → 输入 optionalfeatures.exe → 回车 → 在弹出窗口中勾选 OpenSSH 客户端 → 点击确定 → 等待系统应用更改(无需勾选“OpenSSH 服务器”,除非你要让Windows反向提供SSH服务)。
重启终端后,在PowerShell中运行 ssh -V,若输出类似 OpenSSH_for_Windows_9.5p1, LibreSSL 3.6.3 的信息,说明客户端已就绪。
检查Linux服务器SSH服务是否运行
仅Windows有客户端毫无意义,目标Linux主机必须运行sshd守护进程并监听22端口。
方法一(推荐):登录Linux服务器终端,执行 sudo systemctl status ssh(Debian/Ubuntu)或 sudo systemctl status sshd(CentOS/RHEL)。若显示 active (running),跳过安装;若为 inactive (dead) 或提示 unit not found,则需安装:
Ubuntu/Debian:运行 sudo apt update && sudo apt install openssh-server;
CentOS/RHEL:运行 sudo yum install openssh-server 或 sudo dnf install openssh-server。
安装完成后立即启动服务:sudo systemctl start ssh(或 sshd),并设为开机自启:sudo systemctl enable ssh。
验证网络连通性与端口可达
第一步:在Linux上执行 ip -4 a | grep inet,记下形如 192.168.1.139/24 的IPv4地址;
第二步:在Windows PowerShell中执行 ping 192.168.1.139(替换为实际IP);
第三步:若ping通,再测试SSH端口是否开放:Test-NetConnection 192.168.1.139 -Port 22(PowerShell命令),返回 TcpTestSucceeded : True 才算真正就绪;
若ping不通,检查虚拟机网络模式是否为桥接/NAT+端口转发,或物理网线是否插对网口;若ping通但端口不通,大概率是Linux防火墙拦截了22端口,需执行 sudo ufw allow 22(Ubuntu)或 sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reload(CentOS 8+)。
用密码方式完成首次连接
这是最基础、最可靠的连接方式,用于验证整条链路是否跑通,也是后续配置密钥登录的前提。
① 打开PowerShell,输入命令:ssh username@192.168.1.139(例如 ssh ubuntu@192.168.1.139);
② 首次连接会提示 “The authenticity of host … can’t be established”,这是正常现象,输入 yes 并回车;
③ 输入该用户的登录密码(注意:密码输入时屏幕不显示任何字符,输完直接回车);
④ 若看到类似 ubuntu@server:~$ 的提示符,说明已成功登录;
注意:不能写成 ssh 192.168.1.139,必须带用户名@,否则Windows会尝试用当前Windows用户名去登录,必然失败。
配置私钥免密登录(可选但强烈推荐)
每次输密码既低效又存在泄露风险,尤其配合VS Code Remote-SSH使用时,免密登录是刚需。
方法一:在Windows PowerShell中生成密钥对
执行:ssh-keygen -t ed25519 -f $HOME\.ssh\id_ed25519_myserver -N ''(-N '' 表示私钥不设密码,方便自动化);
生成后得到两个文件:%USERPROFILE%\.ssh\id_ed25519_myserver(私钥)和 id_ed25519_myserver.pub(公钥)。
方法二:将公钥上传到Linux服务器
执行:scp $HOME\.ssh\id_ed25519_myserver.pub ubuntu@192.168.1.139:/tmp/;
然后SSH登录服务器,执行:mkdir -p ~/.ssh && cat /tmp/id_ed25519_myserver.pub >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys。
方法三:本地连接时指定私钥
执行:ssh -i $HOME\.ssh\id_ed25519_myserver ubuntu@192.168.1.139;
若不再提示输密码,即配置成功。后续可将该配置写入 %USERPROFILE%\.ssh\config 文件简化调用。


















