上个月帮朋友调一台Linux服务器,他用的Windows 10,服务器是某云厂商的CentOS。他问我:为什么我装了那么多SSH工具,还是连不上?我打开他的电脑,在CMD里敲了一句ssh root@服务器IP,回车,输密码,直接进去了。他愣了半天——原来Windows自己就能连SSH,根本不用装第三方软件。
这个问题其实非常典型。Windows和Linux混用的场景太常见了,但很多人对“到底谁连谁、怎么配、密钥怎么弄”还是一头雾水。这篇就把SSH在Windows和Linux之间的连接讲透,先说原理,再给实操,最后把常见的坑和排查方法也整理出来。
1. SSH到底是什么,Windows和Linux之间怎么建立连接
1.1 先搞懂SSH的工作逻辑
SSH(Secure Shell)翻译过来是“安全外壳协议”。它最核心的作用就两件事:加密传输、远程登录。你在本地电脑敲命令,数据通过SSH加密通道传到远程服务器执行,再把结果加密传回来,中间即使被人抓包,看到的也是密文。
默认情况下SSH走TCP的22号端口,服务端监听22端口等待连接,客户端主动连过去建立加密通道。
用生活类比就是:SSH像一把加密对讲机。对讲机两端都能说话,但信号在空中是加密的,只有持有配对密钥的人才能听到内容。而服务器相当于对讲机的基站,客户端相当于手持终端,必须先和基站建立合法连接,才能开始对话。
连接过程大致分三步:
- 建立TCP连接,确定服务器地址和端口可达
- 协商加密算法,交换密钥,生成会话密钥
- 用户认证,验证你有权限登录
认证方式最常见有密码认证和公钥认证两种,后面会详细讲密钥配置。
1.2 两种“连”的方向
很多人以为SSH只能连Linux服务器,其实不是。SSH是协议,不是某个系统的专利。Windows和Linux之间的SSH连接,方向有两种:
- Windows作为客户端,连接Linux服务器。 这是最常见的场景,开发、运维、管理云服务器都是这种,你本机是Windows,远程是Linux。
- Linux作为客户端,连接Windows主机。 这种场景少,但确实存在。比如你有一台Windows主机跑着某些只能在Windows上跑的服务,你想从Linux远程管理它,就需要在Windows上开启SSH服务端。
这两个方向配置逻辑完全不同。Windows连接Linux,Windows端几乎不用配置,系统自带客户端,你只需要知道Linux服务器的IP、用户名、密码或密钥。Linux连接Windows,麻烦在Windows端——必须安装并启动OpenSSH Server,还要放行防火墙端口。
后面两章分别讲这两个方向的具体操作。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Windows连接Linux:从系统自带工具到远程开发
2.1 直接用Windows自带的OpenSSH客户端
Windows 10 1809以后的版本和Windows 11,系统里都内置了OpenSSH客户端。不需要安装任何软件,直接用就好。
打开CMD或PowerShell,输入:
bash复制ssh 用户名@服务器IP
比如root用户连接192.168.1.100:
bash复制ssh root@192.168.1.100
如果服务器SSH端口不是默认的22,用-p参数指定:
bash复制ssh -p 2222 root@192.168.1.100
第一次连接时,系统会提示确认服务器的指纹(host key),输入yes并回车即可:
bash复制The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ED25519 key fingerprint is SHA256:xxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
这里有个细节值得注意:这个提示是防止中间人攻击的,如果以后再次连接时指纹变了,系统会报错并拒绝连接。所以第一次连接时要确认对方是你要连的服务器,没人会真的去核对指纹,但至少别直接忽略。
输入密码时,屏幕不会显示任何字符(连星号都没有),这是正常现象,不要以为是键盘坏了,输入完直接回车即可。
连接成功后,你的命令行就变成远程服务器的命令行,可以执行Linux命令了。退出连接输入exit。
实测下来,Windows自带的OpenSSH客户端虽然界面朴素,但兼容性很好,日常管理服务器完全够用。唯一的短板是CMD对字体和配色支持太差,长时间盯终端眼睛累,这个后面讲Wind
