Mac 如何通过 SSH 控制同一 Wi-Fi 下的 Windows 电脑

背景

手里有一台 MacBook Air 和一台 Windows 台式机,连接着同一个 Wi-Fi。很多时候我想在 Mac 上直接操作 Windows——比如跑个脚本、传个文件——但又不想走到台式机前去操作。SSH 是最轻量的解决方案。

什么是 SSH

SSH(Secure Shell,安全外壳协议)让你安全地远程登录另一台电脑,并在上面执行命令。所有传输的数据都是加密的,不会被窃听或篡改。

一个类比:SSH 就像一条加密的隧道,你在这头输入命令,另一头的电脑收到并执行,然后把结果安全地传回来。

SSH vs 远程桌面

对比SSH远程桌面 (RDP)
传输内容命令行(纯文本)图形界面(屏幕画面)
带宽要求极低较高
操作方式键盘敲命令鼠标点击图形界面
适用场景服务器、开发、自动化日常办公、图形软件

SSH 更轻量高效,适合命令行操作;远程桌面适合需要图形界面的场景。

Windows 端:启用 OpenSSH 服务器

Windows 10/11 自带 OpenSSH,只需要几步开启。

1. 安装并启动 SSH 服务

以管理员身份打开 PowerShell,执行:

# 安装 OpenSSH 服务器
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# 启动 SSH 服务
Start-Service sshd

# 设置开机自启
Set-Service -Name sshd -StartupType Automatic

2. 确认防火墙放行端口 22

安装时通常会自动配置防火墙规则,可以验证一下:

# 查看已有的 SSH 防火墙规则
Get-NetFirewallRule -Name *ssh*

# 如果没有规则,手动添加
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

3. 查看 Windows 的 IP 地址

ipconfig

找到无线局域网适配器(或以太网适配器)下的 IPv4 地址,类似 192.168.x.x,后面连接要用。

4. 确认用户名

whoami
# 例如输出 DESKTOP-ABC\pkz → 用户名为 pkz

Mac 端:连接

打开终端,先测试网络是否通:

nc -zv 192.168.x.x 22

然后连接:

ssh 用户名@192.168.x.x
# 例如:ssh pkz@192.168.31.143

首次连接会提示确认主机指纹,输入 yes 回车,然后输入 Windows 账户的密码即可。连接成功后,终端就变成了 Windows 的命令行。

进阶:密钥登录(免密码)

每次连接都要输入密码很麻烦,而且密码可能在输入时被看到。SSH 密钥登录通过一对密钥(公钥 + 私钥)来认证,配置好之后连接不再需要密码。

原理

简单来说:你在 Mac 上生成一对密钥,把公钥放到 Windows 上,私钥留在 Mac 上。连接时,SSH 用私钥做签名,Windows 用公钥验证——匹配则通过,整个过程不需要传输密码。

类比:公钥像是一把锁(装在 Windows 上),私钥是唯一的钥匙(留在 Mac 上)。只有拿着钥匙的人才能开锁。

1. 在 Mac 上生成密钥对

ssh-keygen -t ed25519 -C "mac-to-windows"

一路回车即可(使用默认路径 ~/.ssh/id_ed25519,不设密码短语)。

生成两个文件:

  • ~/.ssh/id_ed25519 — 私钥(绝不能给别人)
  • ~/.ssh/id_ed25519.pub — 公钥(可以放到任何服务器上)

2. 把公钥复制到 Windows

Windows 的 OpenSSH 默认从 C:\Users\用户名\.ssh\authorized_keys 读取公钥。在 Mac 上执行:

# 在 Windows 上创建 .ssh 目录(如果不存在)
ssh 用户名@192.168.x.x "mkdir C:\Users\用户名\.ssh 2>nul"

# 把公钥追加到 authorized_keys
cat ~/.ssh/id_ed25519.pub | ssh 用户名@192.168.x.x "cat >> C:\Users\用户名\.ssh\authorized_keys"

或者手动方式:把 id_ed25519.pub 的内容复制出来,在 Windows 上用记事本粘贴到 C:\Users\用户名\.ssh\authorized_keys

3. 测试免密登录

ssh 用户名@192.168.x.x

不再提示输入密码,直接进入——配置成功。

如果仍然要求密码,检查 Windows 端:

  • authorized_keys 文件内容是否正确(一整行,不能有换行断裂)
  • 路径中的用户名是否和你登录的用户名一致

进阶:用 SCP 传文件

SSH 连通之后,可以用 scp(Secure Copy)在两台电脑之间安全地传输文件,原理和 SSH 相同——数据全程加密。

从 Mac 传文件到 Windows

scp 本地文件路径 用户名@192.168.x.x:目标路径

# 例:把 Mac 桌面上的报告传到 Windows 桌面
scp ~/Desktop/report.pdf pkz@192.168.31.143:C:/Users/pkz/Desktop/

从 Windows 传文件到 Mac

scp 用户名@192.168.x.x:远程文件路径 本地路径

# 例:把 Windows 上的实验结果拉到 Mac
scp pkz@192.168.31.143:C:/Users/pkz/Desktop/results.csv ~/Downloads/

传整个文件夹

-r(recursive)参数即可递归传输整个目录:

# 把整个项目文件夹从 Mac 推到 Windows
scp -r ~/projects/my_project pkz@192.168.31.143:C:/Users/pkz/Desktop/

# 把 Windows 上的文件夹拉到 Mac
scp -r pkz@192.168.31.143:C:/Users/pkz/Desktop/data ~/Downloads/

SCP vs 其他传文件方式

方式优点缺点
SCP加密、命令行一行搞定传大量小文件较慢
微信/QQ传文件有图形界面大小限制、文件名会变、慢
U盘不依赖网络要走过去插
共享文件夹(SMB)可在 Finder 中直接访问配置稍复杂

日常传几个文件用 SCP 就够了。如果频繁双向同步大量文件,可以考虑配置 SMB 共享文件夹。

进阶:SSH 配置文件简化连接

每次都要输入 ssh pkz@192.168.31.143 太长了。可以在 ~/.ssh/config 中写好别名:

配置方法

在 Mac 上创建或编辑 ~/.ssh/config

nano ~/.ssh/config

添加以下内容:

Host win
    HostName 192.168.31.143
    User pkz
    IdentityFile ~/.ssh/id_ed25519

保存后,连接只需:

ssh win

SCP 也同样简化:

scp report.pdf win:C:/Users/pkz/Desktop/
scp win:C:/Users/pkz/Desktop/results.csv ~/Downloads/

如果 IP 会变

家庭路由器通常用 DHCP,重启后 IP 可能变化。两个解决办法:

  1. 在路由器管理页面给 Windows 绑定固定 IP(推荐,一劳永逸)
  2. 每次连接前先在 Windows 上 ipconfig 确认 IP,然后更新 config

常见问题

连接超时? 检查两台电脑是否在同一局域网、Windows 防火墙是否放行了 22 端口、sshd 服务是否在运行。

密码正确但被拒绝? 确认使用的是 Windows 本地账户的用户名和密码,而不是 Microsoft 账户。如果用的是 Microsoft 账户登录 Windows,SSH 的密码也是那个 Microsoft 账户密码。

密钥登录不生效,还是要求密码? 检查 authorized_keys 的内容是否完整(一整行),以及 Windows 端 sshd_configPubkeyAuthentication 是否为 yes

Windows 重启后连不上? 确认 sshd 的启动类型是 Automatic(前面配置过),重启后服务会自动启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值